2014-04-25 15 views
10

Udało mi się zaprogramować logowanie z systemem Facebook w mojej aplikacji internetowej PHP. Ale teraz trochę utknąłem w najlepszych praktykach.Najlepsza praktyka Logowanie za pomocą Facebooka, Twittera, Google lub zarejestruj się

Czy muszę zapisać identyfikator użytkownika użytkownika w mojej bazie danych, adres e-mail użytkownika i/lub imię i nazwisko? Pytam o to, ponieważ myślę o użytkownikach zmieniających ich adres e-mail, którzy nie będą mogli zalogować się następnym razem, jeśli tak.

A skąd mogę wiedzieć, że kiedy użytkownik loguje się na Facebooku, a następnym razem na Twitterze, to ten sam użytkownik? Prawdopodobnie w oparciu o jego adres e-mail? Ale myślę, że jeśli go nie zmienisz, standardowa wiadomość e-mail na Facebooku to [email protected], prawda?

Nie proszę o kod tutaj, proszę podać mi pewne doświadczenia lub najlepsze praktyki.

Z góry dziękuję!

Stijn Hoste

+1

To, co zapiszesz w swojej bazie danych, zależy od tego, jakich danych potrzebujesz i kiedy ich potrzebujesz. I nie, prośba o zezwolenie "e-mail" daje ci adres e-mail, który użytkownik zarejestrował w FB (nie pod adresem nazwa_uż[email protected]) - ale to pole może być _blank_, jeśli zarejestrowałeś się w FB przy użyciu telefonu komórkowego. – CBroe

+0

Dziękuję za odpowiedź, potrzebuję tylko danych logowania. I pewnego rodzaju identyfikator do przechowywania danych powiązanych z określonym użytkownikiem. Więc myślę, że pójdę z polem e-mail, które jest unikalne dla użytkownika. –

+1

Cóż, jak już powiedziałem, możesz nie dostać adresu e-mail w ogóle - i pusty ciąg nie jest unikalny :-) – CBroe

Odpowiedz

5

jak dla mnie najlepszym rozwiązaniem jest użyć oauth2 biblioteki (wszystkie socjalne są obsługiwane go) i używać bazy danych z dwóch tabel: użytkowników i users_socials.

Gdy użytkownicy próbują zalogować się przez sieć społeczną, skrypt utworzy rekordy na tabelach i połączy te tabele za pomocą relacji "jeden do wielu". Wszystkie portale społecznościowe zwracają unikalny identyfikator dla użytkownika uwierzytelnionego, a skrypt może go wstawić do pamięci masowej, aby można go było użyć w dalszej części.

Tabela scructure i testowe dane

użytkownik Tabela

user_id | email 
________________ 
1   | [email protected] 
2   | [email protected] - if the social cannot return an email address 

user_socials Tabela

social_id | user_id | social 
____________________________ 
123213213 | 1  | facebook 
332123213 | 1  | twitter 
323232321 | 2  | vk 

Ten wzór jest dobry, ponieważ jeden użytkownik może połączyć wiele socjalne z jego konta

Ps Facebook, Twitter, Google+ - zwróć adres e-mail użytkownika

+4

Z mojego doświadczenia wynika, że ​​"wynalezienie" adresu pseudo-adresu e-mail tylko w celu utworzenia ważnego rekordu użytkownika zazwyczaj wskazuje na problem z modelem i prawie na pewno spowoduje później żal. Posiadanie prawdziwych danych zmieszanych z fałszywymi danymi powoduje tak wiele problemów.Jeśli ktoś może utworzyć konto bez adresu e-mail, powinieneś zaprojektować model w ten sposób; co oznacza, że ​​adres e-mail nie może być Twoim głównym środkiem identyfikacji. Z mojego punktu widzenia '323232321 @ vk.com' jest naprawdę mylącą podtekstem' null'. Tylko moje dwa centy. –

+0

@ mindplay.dk świetny komentarz. Próbuję zaprojektować wokół tego problemu atm. Czy masz jakieś sugestie lub linki, które mogłyby pomóc? –

Powiązane problemy