2014-11-20 7 views
6

Ich habe ein nettes kleines Anmeldeskript für meine Website erstellt, mit dem sich Benutzer im Moment mit Facebook oder Google anmelden können.Logic Behind Social Login

Was ich versuche zu tun ist stellen Sie einige Prüfungen, um sicherzustellen, dass Duplikate in der Datenbank nicht angezeigt werden.

Hier sind einige Szenarien ich zurückgelegt haben:

  • Anmeldung mit Google/Facebook-Account und ich habe bereits dieses Konto registriert, Dadurch wird der Benutzer gerade eingeloggt sein, da sie bereits dieses Konto verknüpft haben.
  • Benutzer hat bereits registriert mit Google Konto, klickt doch Facebook, weil sie kann mich nicht erinnern, welches Konto sie verwendet. Dadurch wird der Benutzer darauf aufmerksam gemacht, dass die von Facebook zurückgegebene E-Mail-Adresse bereits mit einem Google Konto registriert wurde. Dadurch können sie auf klicken, um sich anzumelden??? NICHT SICHER MIT DIESER LOGIK IM MOMENT ???
  • Benutzer klickt auf Google/Facebook anmelden, aber die E-Mail-Adresse zurückgegeben wird, ist ein Benutzer, der durch die manuelle Registrierung ging. Dadurch wird der Benutzer darauf hingewiesen, dass das soziale Konto, das er mit anmelden möchte, ein Kennwort erfordert.

Was ich denke an tun, ist so dass Anwender LINK ACCOUNT so dass das Alarmierungsprozess findet nicht statt, weil ich mein Facebook-Konto mit meinem Google-Konto durch meine Website verknüpfen kann und umgekehrt usw. usw.

Was ich frage:

gibt es weitere Kontrollen ich möglicherweise fehlen? Ist diese Logik klingen? Gibt es etwas, was ich mache, was Sie den Login-Prozess in Frage stellt?

Grundsätzlich Fragen Logik Beratung auf diesem.

Antwort

4

Herzlichen Glückwunsch! Du bist fast auf dem richtigen Weg. Lassen Sie uns Ihre Situation hier zusammenfassen.

Ideal Situation

1. Registered on your site 
2. Log in with Google 
3. Log in with Facebook 

Jetzt wollen wir hier den gemeinsamen Nenner nehmen, ich meine den Primärschlüssel. Ich vermute, in Ihrem Fall sollte es die E-Mail-Adresse sein.

tatsächliche Ablauf

1. User registers. You save the email address 

Oder

2. User registers with Google/Facebook and you save the email address. 

Anmeldung Verfahren

1. You receive the email address either from direct login/facebook/google. 
2. You match it against your table 
3. On positive match, you link this social login to an existing account 

Wenn

4. It is not a positive match then you accept whatever data you receive and then forward 
    and then pass on to the registration page. 

Hoffe, das hilft! Lass es mich wissen, wenn du etwas anderes wissen willst.

Prost!

+1

Dies ist die Lösung für die Frage, wie gefragt, aber ich würde diese E-Mail als Primärschlüssel über SSOs warnen ist eine riskante Richtung und ungeeignet für Websites, wo der Benutzer etwas Persönliches eingeben kann. (Beispiele: Wenn Sie vergessen, googles email_verified zu überprüfen, sind jetzt alle Konten gefährdet. Wenn ein google SSO-Benutzer fb nie verwendet, aber die Adresse hatte einen früheren Besitzer, der ... oops.) Ein neuer Benutzer kann ein anderes Konto haben ein kleineres Übel, aber nur deutlich anzuzeigen, dass sie eine neue Kontoerstellung eingeben, die abgebrochen werden kann, ist noch sicherer. – lossleader

+0

Übergeben! Du hast recht. Nun, mit dieser Frage kommt ein sehr wichtiges Szenario, d. H. Geschäftslogik. Wir machen CRM für den Lebensunterhalt. In jedem Fall hat jeder Kunde einen anderen Primärschlüssel. Manchmal ist es für eine Versicherungsgesellschaft eine Telefonnummer, für eine Partnervermittlung ist es eine E-Mail-Adresse, für eine andere kann es eine Anwendungs-ID sein. Sie müssen also sicherstellen, dass Sie den Primärschlüssel an Ihrem Ende behandeln. Was ich getan hätte, ist, mit SSO voranzukommen und dann mögliche Übereinstimmungen zu zeigen und dann den Benutzer auswählen zu lassen. Nach einer OAuth-Registrierung muss der Benutzer zusätzlich einige zusätzliche Informationen eingeben. –

+0

Ich denke, als die einzige Person, die bereit ist zu antworten, und jemand, der scheint, auf der richtigen Linie zu gehen, verdienen Sie die Prämie auf diesem. Ich stimme vielleicht nicht zu ** 100% ** mit Ihrem Verfahren überein - aber es ist nicht weit entfernt von dem, was ich brauchte. – JustSteveKing