Ich baue gerade eine Web-App (meine erste) und wollte die OAuth-Funktion integrieren, damit sich Benutzer über Twitter und Facebook anmelden können. Ich baue es in Sinatra und habe mir das OmniAuth-Juwel angesehen, das genau richtig für den Job zu sein scheint. Das Problem, das ich habe, ist das Benutzermodell neu zu gestalten.Benutzermodellentwurf bei Verwendung von OAuth
Momentan habe ich den üblichen Vornamen, Nachnamen, Benutzername, E-Mail und Passwort, mit dem Benutzernamen ist einzigartig, so dass ich es für die ID verwenden kann, und wie Twitter, kann ich eingeben www.myapp.com/ Benutzername, um die Informationen zu diesem Benutzer zu finden. Ich entschied, dass ich für die anfängliche Version nur Twitter als Login, dann später Facebook und zuletzt die übliche Anmeldung verwenden werde. Mein Problem ist, dass es sehr wahrscheinlich ist, dass die Nutzer in Facebook die gleichen Benutzernamen haben wie in Twitter. Wenn ich mich zum Beispiel mit twitter anmelde und die ID "newuser" erhalte, wird es ein Problem, wenn jemand mit demselben Nutzernamen von facebook versucht, sich anzumelden.
Das OmniAuth-Juwel arbeitet mit einem Hash der Benutzerinformationen. Ich werde Mongo verwenden, also kann ich ein Twitter- und ein Facebook-Feld in das Benutzermodel einfügen und die Hashes dort aufbewahren. Ich bin nur ein bisschen ratlos, wie man eindeutige IDs erstellt, wenn es mehr als wahrscheinlich ist Beide Dienste haben Leute mit dem gleichen Benutzernamen, oder sobald die normale Anmeldung implementiert ist, könnte jemand sich anmelden und einen Benutzernamen nehmen, der bereits auf Twitter oder Facebook verwendet wird, und verhindert, dass diese Personen sich mit ihrem Twitter/Facebook anmelden Konten.
Ich würde wirklich interessiert zu hören, wie andere dies angegangen sind.
noch einmal, hätte ein bisschen mehr suchen müssen. http://blog.railsrumble.com/blog/2010/10/08/intridea-omniahuth Dies ist ein interessanter Artikel über die Trennung von Benutzern und Autorisierung. –