Spolunažívanie facebookového a interného prihlasovania

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
livthomas
Člen | 24
+
0
-

Zdravím,
mám vytvorený jednoduchý systém prihlasovania podľa QuickStartu a k nemu som pridal prihlasovanie pomocou facebooku. No neviem ako tieto dve riešenia skĺbiť dohromady, aby to bolo užívateľsky príjemné a zároveň jednoducho upravovateľné. Napadli ma dve riešenia, no ani jedno z nich nepovažujem za dokonalé:

  1. Interné prihlasovanie by bolo riešené cez e-mail a heslo. E-mailová adresa by teda bola v databáze jedinečná (unique key). V prípade prihlásenia cez facebook by sa pri nenájdení daného e-mailu (z facebooku) v databáze vytvoril nový užívateľ. Toto mi príde ako elegantné riešenie, ktoré má však pre mňa jeden veľký nedostatok. Ja osobne totiž nenávidím prihlasovanie cez e-mail. Mám na to hneď niekoľko dôvodov. Jedným z nich je napríklad to, že na rôzne stránky sa registrujem len so svojou „spamovou“ e-mailovou adresou, ktorá nemá absolútne nič spoločné s mojim bežne používaným užívateľským menom či skutočnou mailovou adresou.
  2. Interné prihlasovanie by bolo riešené cez užívateľké meno a heslo. V tomto prípade by teda bolo jedinečné užívateľské meno, no pri užívateľoch z facebooku by vznikal problém, aké užívateľské meno im vytvoriť pri prvom prihlásení. Buď by sa mohlo preberať užívateľské meno z facebooku, no to myslím nemajú nastavené úplne všetci a aj tak nie je zaručené, že také meno si už na stránke niekto nezaregistroval klasickým spôsobom. A keby som to aj chcel robiť takto a pri konflikte mien si pri prvom prihlásení od facebookového užívateľa vyžiadal iné užívateľské meno, nebolo by to podľa mňa veľmi užívateľský prívetivé, keďže cez facebook sa ľudia prihlasujú hlavne preto, že len raz kliknú a všetko je vybavené. Prípadne by sa mohlo vždy vytvoriť len akési automaticky vygenerované jedinečne užívateľské meno, namiesto ktorého by sa však v užívateľskom profile a vlastne všade na stránke zobrazovalo to facebookové, čo by bola ale zbytočne robota navyše.

Preto sa vás pýtam, neviete o nejakom kompromise medzi týmito dvoma riešeniami? Aby sa interne dalo prihlasovať cez užívateľské meno, no zároveň sa facebookový užívateľ mohol pohodlne prihlásiť bez zbytočného vypĺňania svojho užívateľského mena a tiež aby som ja ako programátor nemusel ošetrovať zbytočnosti (kto je ako prihlásený).

fojta
Člen | 24
+
0
-

Hele ja to resim pres 1. zpusob. Napsal jsem si komponentu ktera se me stara o prihlasovani. Mam unique email a pak unique nickname. Pri prihlaseni uzivatele z FB se me sparuje podle emailu a nickname se mu vygeneruje nahodny. Kdyz se vygeneruje nickname ulozim si to do nastaveni uzivatele a nickname nezobrazuju dokud si ho uzivatel nezmeni :] … ted me napadlo ze bych mohl pri neexistenci v DB vytahnout i uzivatelu fb nickname, dnes ho ma kazdy nastaven bud si ho dal sam nebo mu ho fb pridelil, napr. jan.novak.69

Ale ted delam prihlasovani pres Twitter a ten ti neposkytuje uzivateluv email, ale pouze id a nickname. V tom pripade nastava problem.

livthomas
Člen | 24
+
0
-

Dnes ma napadlo celkom jednoduché riešenie (v podstate na ten 2. spôsob). V databáze budem mať unikátne stĺpce username, email, facebook ID, twitter ID a obyčajné stĺpce password a name.

  • Pri registrácii bude užívateľ musieť vyplniť username, password a email. Facebook ID a twitter ID budú mať hodnotu NULL. Name dostane hodnotu z username, no užívateľ bude môcť túto hodnotu kedykoľvek zmeniť, keďže sa nejedná o unikátny stĺpec.
  • Pri prihlásení cez facebook alebo twitter sa vyplnia len položky facebook ID/twitter ID a name, prípadne ešte email. Ostatné položky budú mať hodnotu NULL a takto „zaregistrovaný“ užívateľ sa teda nebude môcť prihlasovať klasickým spôsobom.

Všade na stránke sa bude zobrazovať hodnota zo stĺpca name, ktorý prípadne ešte obmedzím, že sa bude dať meniť len raz za čas. Uvedomujem si, že pri takomto riešení budem mať v databáze zbytočne množstvo hodnôt NULL, no podľa mňa je to riešenie užívateľsky prívetivé a zároveň pre programátora veľmi jednoduché na implementáciu.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Jednoznačně to bude uživatelsky přívětivé. Je pak dobré dát pozor v nějakém formuláři na změnu hesla, aby to umožnilo nastavit heslo tomu, kdo přišel právě skrz Facebook nebo Twitter.

livthomas
Člen | 24
+
0
-

Jasné, v užívateľských nastaveniach by som potom ošetril, že ak majú username a password hodnotu NULL, tak sa tam namiesto formulára pre zmenu hesla zobrazí formulár na „vytvorenie“ klasického účtu.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Yeah :) U nějaké služby se mi už stalo, že mi nepovolila si to heslo nastavit… „Zadejte prosím heslo.“