2014-04-25 9 views
10

Ich habe es geschafft, ein Login mit Facebook-System in meiner PHP-Webapplikation zu programmieren. Aber jetzt bin ich in Best Practices festgefahren.Best Practice Login Mit Facebook, Twitter, Google oder registrieren

Muss ich die Benutzer-ID des Benutzers in meiner Datenbank speichern, die E-Mail-Adresse des Benutzers und/oder Name und Vorname? Ich frage das, weil ich darüber nachdenke, dass Benutzer ihre E-Mail-Adresse ändern, die sich beim nächsten Mal nicht einloggen können.

Und wie kann ich wissen, dass wenn ein Benutzer sich mit Facebook anmeldet, und das nächste Mal mit Twitter zum Beispiel, dass es derselbe Benutzer ist? Wahrscheinlich basierend auf seiner E-Mail-Adresse? Aber ich denke, wenn Sie es nicht geändert haben, ist Ihre Standard-Facebook-E-Mail [email protected], richtig?

Ich frage nicht nach Code hier, bitte geben Sie mir einige Erfahrungen oder Best Practices.

Vielen Dank im Voraus!

Stijn Hoste

+1

Was Sie in Ihrer Datenbank speichern, hängt davon ab, welche Art von Daten Sie benötigen und wann Sie sie benötigen. Und nein, die Berechtigung "E-Mail" fragt Sie nach der E-Mail-Adresse, die der Benutzer bei der FB registriert hat (nicht die Adresse [email protected]) - aber dieses Feld könnte _blank_ sein, wenn sie sich für die FB mit ihrem Mobiltelefon registriert haben. – CBroe

+0

Vielen Dank für Ihre Antwort, ich brauche nur Login-Informationen. Und eine Art ID zum Speichern von Daten, die mit einem bestimmten Benutzer verknüpft sind. Ich denke also, ich werde mit dem E-Mail-Feld gehen, das für einen Benutzer einzigartig ist. –

+1

Nun, wie gesagt, du bekommst vielleicht gar keine E-Mail-Adresse - und eine leere Zeichenfolge ist nicht eindeutig :-) – CBroe

Antwort

5

Was mich betrifft, ist die beste Praxis oauth2 Bibliothek verwenden (alle socials werden sie unterstützt) und verwenden Datenbank mit zwei Tabellen: Benutzer und users_socials.

Wenn die Benutzer versuchen, sich über soziale Netzwerke anzumelden, erstellt Ihr Skript Datensätze in Tabellen und verbindet diese Tabellen über eine "eins zu viele" Beziehung. Alle sozialen Netzwerke geben einen eindeutigen Bezeichner für den auth-Benutzer zurück und Ihr Skript kann es zur weiteren Verwendung in den Speicher einfügen.

Tabelle scructure und Testdaten

Tabelle Benutzer

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

Tabelle user_socials

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

Dieses Muster ist gut, weil ein Benutzer viele socials mit seinem Konto

verbinden kann Ps Facebook, Twitter, Google+ - Zurückgeben der Benutzer-E-Mail

+4

Nach meiner Erfahrung ist das "Erfinden" einer Pseudo-E-Mail-Adresse, nur um einen gültigen Benutzerdatensatz zu erstellen, normalerweise ein Hinweis auf ein Problem mit dem Modell und wird mit ziemlicher Sicherheit später zu Trauer führen. Wenn echte Daten mit gefälschten Daten vermischt werden, entstehen so viele Probleme.Wenn jemand ein Konto ohne E-Mail-Adresse erstellen darf, sollten Sie das Modell auf diese Weise entwerfen. Das bedeutet, dass die E-Mail-Adresse nicht Ihr primäres Erkennungsmerkmal sein kann. Aus meiner Sicht ist '323232321 @ vk.com' ein wirklich irreführender Ersatz für' null'. Nur meine zwei Cent. –

+0

@ mindplay.dk großer Kommentar. Ich versuche, um dieses Problem ATM zu entwerfen. Haben Sie Vorschläge oder Links, die Ihnen helfen könnten? –