2010-11-27 7 views
1

Je suis en train de construire une application web (la première), et je voulais inclure la fonctionnalité OAuth pour que les utilisateurs puissent se connecter via Twitter et Facebook. Je le construis à Sinatra, et j'ai regardé la gemme OmniAuth, qui semble être juste pour le travail. Le problème que je rencontre est la refonte du modèle de l'utilisateur. Actuellement, j'ai le prénom, le nom de famille, le nom d'utilisateur, l'email et le mot de passe habituels, avec le nom d'utilisateur étant unique pour que je puisse l'employer pour l'identification, et comme twitter, je peux taper www.myapp.com/ nom d'utilisateur pour trouver l'information sur cet utilisateur. J'ai décidé que pour la version initiale, je vais juste utiliser Twitter comme identifiant, puis plus tard facebook, et enfin l'inscription habituelle. Mon problème est qu'il est plus que probable que les gens auront les mêmes noms d'utilisateur sur Facebook que sur Twitter. Ainsi, par exemple, si je me connecte en utilisant twitter et que je prends l'identifiant 'newuser', ce sera un problème si quelqu'un avec le même nom d'utilisateur de facebook essaie de se joindre.Création du modèle utilisateur en utilisant OAuth

La gemme OmniAuth fonctionne en fournissant un hachage des informations utilisateur. Je vais utiliser Mongo, donc je peux inclure un champ twitter et facebook dans le modle utilisateur et garder les hachages dedans, je suis juste un peu perplexe quant à la façon de créer des ID uniques quand il est plus que probable que les deux services vont avoir des gens avec le même nom d'utilisateur, ou qu'une fois la connexion établie, quelqu'un peut s'inscrire et prendre un nom d'utilisateur déjà utilisé sur twitter ou facebook, empêchant ces personnes de s'inscrire avec leur twitter/facebook comptes.

Je serais très intéressé d'entendre comment les autres ont abordé cette question.

+1

encore une fois, aurait dû faire un peu plus de recherche. http://blog.railsrumble.com/blog/2010/10/08/intridea-omniauth ceci est un article intéressant sur la séparation des utilisateurs et des autorisations. –

Répondre

1

J'utilise une table pour les clés auth, cela signifie: user_id,: fournisseur,: colonnes clés et une seperated table utilisateur,: email,: surnom, ...

Si l'utilisateur connecté avec son compte Twitter, déconnectez-vous et connectez-vous avec Google Acc. par exemple, vous aurez deux comptes différents, et il n'y a pas de solution pour en associer un à un compte existant. Je vous suggère d'autoriser l'utilisateur connecté à lier son compte d'utilisateur actuel à un autre fournisseur d'authentification (vous devez séparer l'utilisateur de l'authentification et après la première connexion, il devrait pouvoir lier plus de clé d'authentification à son compte d'utilisateur). Il se connecte à son compte utilisateur principal (en utilisant Twitter, par exemple) et connecte son compte utilisateur à son compte Google en cliquant sur l'icône google sur la page d'authentification.

+0

Merci Nucc. Le problème d'un utilisateur ayant deux comptes séparés est quelque chose qui m'inquiétait. Je suppose que tant que l'option «connecter un autre compte» est clairement marquée, cela peut être évité. –

Questions connexes