Wie entwerfe ich ein Schema für eine Site, die Anmeldungen von mehreren Sites akzeptiert (z. B. Facebook Connect, Google, Flickr usw.)? [geschlossen]

7

Ich erstelle eine Site ( "The Site" ) und überlege, wie ich das DB-Schema dafür entwerfen soll.

Ich habe einige Szenarien, die sich auf das Ergebnis auswirken:

  • Der Benutzer kann ein natives Konto auf der Site registrieren , wodurch er dieses Konto künftig für die Anmeldung bei seinem Konto auf der Site verwendet .
  • Der Benutzer kann sich über eine andere Site ( "externe Site" ) (wie Facebook Connect, Google, Foursquare usw.) anmelden. Dadurch kann er sich künftig in seinem Konto auf der Site anmelden .
  • Unabhängig davon, welche Anmeldemethode er gewählt hat (natives Konto oder externes Site-Konto), kann der Benutzer sein Konto auf der Site mit externen Sites (wie Facebook, Twitter, Instagram usw.) für die Verwendung authentifizieren die Daten, die er auf der externen Website hat (wie seine Tweets von Twitter, seine Fotos von flickr usw.), auf der Website .

Wie soll ich das Schema der DB entwerfen?

In den ersten beiden Szenarien dachte ich daran, eine Tabelle Usersmit einem idund einem typeFeld zu haben. Die Typenbezeichnung eine andere Tabelle, wie FacebookUsersoder GoogleUsers, die jeweils eine hat user_idFeld - , die ein fremdes Verhältnis zum hat Users.idFeld - und andere Bereiche , wie beispielsweise die first_name, profile_pictureusw ..

Jedoch:

  1. Ich bin mir nicht sicher, wie klug es ist, diesen Ansatz zu verwenden.
  2. Ich weiß nicht, wie ich das dritte Szenario in einem solchen Ansatz implementieren soll.
Doron
quelle
Ich schließe dies als nicht zum Thema gehörend, da dies eine Frage zur Website-Architektur / zum Design / zur Geschäftslogik als eine Frage zum Datenbankdesign ist.
CoderHawk

Antworten:

1

Es gibt eine ähnliche Frage im Stapelüberlauf

Und die Lösung ist

Sie benötigen 2 zusätzliche Felder in Ihrer Tabelle, eines ist die Anmeldequelle (Twitter, openID, Facebook) und das andere ist die Quellbenutzer-ID (die von Twitter, openID, Facebook bereitgestellte ID). Ich empfehle, diese Zeichenfolge als Anmeldung zu verwenden Quellen haben Buchstaben in ihren Benutzer-IDs und nicht nur Zahlen. Mehr

  • Ich bin mir nicht sicher, wie klug es ist, diesen Ansatz zu verwenden.

Dieser Ansatz ist gut, tatsächlich entscheiden sich Websites dafür. Siehe SO-Anmeldeseite https://stackoverflow.com/users/login

  • Ich weiß nicht, wie ich das dritte Szenario in einem solchen Ansatz implementieren soll.

Ich denke, Sie können dies nur implementieren, wenn die Websites von Drittanbietern Zugriff bieten. Diese Frage ist hier nicht zum Thema, Sie können sie im Stackoverflow stellen

CoderHawk
quelle