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.
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. –