2012-05-02 1 views
1

Je construis un service qui peut être utilisé anonymement, cependant l'utilisateur a la possibilité de partager du contenu sur ses profils Facebook et/ou Twitter. Après avoir autorisé les applications, je souhaite stocker des informations de base sur les utilisateurs et les lier au contenu qu'ils partagent.Facebook - Twitter authentification - fusion d'informations

Habituellement services nécessitent une authentification avant l'utilisation, ce qui permet de résoudre ce problème, mais dans mon cas d'authentification est à la dernière étape et c'est divisé en 4 chemins:

  1. [Facebook + Twitter]
  2. [ Facebook seul]
  3. [Twitter seul]
  4. [Rien]

faire Cependant, le wil ci-dessus Je crée des données redondantes dans la base de données, c'est-à-dire que j'aurai les informations Facebook et les informations Twitter dans des tableaux séparés sans lien entre eux et sans relation avec le message.

  • Quelle est la meilleure approche pour éviter cela? La solution est sur le niveau de modélisation de données? Ou au niveau du code? Ou les deux?

  • Cela a-t-il déjà été fait?

J'ai créé un organigramme de la façon dont la fusion des données de compte peut se faire, mais ce processus pourrait créer au-dessus du niveau de la base de données car il nécessite la recherche d'entrées à l'aide de la très longue FacebookID \ TwitterID.

  • Si des informations supplémentaires sont requises, veuillez les indiquer dans un commentaire.

Merci

+0

Dans l'option 1, l'utilisateur se connectera-t-il avec ses identifiants Facebook et Twitter en même temps? –

+0

Non, ils authentifieront séparément, un bouton chacun. – Bassem

+0

Dans ce cas, veuillez élaborer sur le premier scénario (Facebook + Twitter). –

Répondre

0

La façon dont je le gérer est de séparer le concept d'identité utilisateur du concept d'authentification utilisé par votre application. Par exemple, au niveau du modèle de données, demandez à la table Utilisateurs de stocker les informations utilisateur de base et de disposer d'une table Authentifications qui stocke les informations d'identification utilisateur/jetons associées à un fournisseur d'authentification particulier. Au niveau du code, si vous envisagez de vous en tenir à l'authentification tierce, je vous recommande de construire une couche qui peut protéger votre application contre les différents fournisseurs OAuth.

Dans le monde Ruby/Rails, cela est accompli par une combinaison de Devise qui gère les identités des utilisateurs (il permet également d'avoir intégré l'authentification nom d'utilisateur/mot de passe, mais il ne semble pas que vous êtes intéressé par ce) et OmniAuth qui fournit l'authentification contre plusieurs fournisseurs. Un exemple d'application incorporant les deux est disponible ici: Devise + OmniAuth. Enfin, Railscast sur le sujet est ici: OmniAuth Part 1

Je me rends compte que vous ne pouvez pas travailler dans Ruby/Rails, mais ces matériaux peuvent vous fournir l'inspiration pour l'architecture que vous essayez d'atteindre.

Questions connexes