2011-03-14 3 views
3

Je crée une façon dont les gens peuvent connecter leur compte Fb, Twitter et FS au compte qu'ils créent sur mon application. Je veux créer une seule table où je peux stocker tous les trucs nécessaires ..Oauth - Facebook/Twitter/Foursquare

User(id, username, password, email) 

Oauth (id, user_id, oauth_provider, .......) 

En ce qui concerne ma compréhension

Facebook facebook a besoin id

Twitter a besoin id, jeton , secret

Foursquare nécessite un courrier électronique et id du consommateur.

Je voulais juste confirmer que je le fais bien .. dans la construction de la Table Oauth.

Répondre

5

Personnellement, je crée un champ nommé "paramètre_paramètre" pour la valeur de l'exigence car toutes ces API ont besoin de choses différentes. Comme vous l'avez dit, Facebook a besoin de l'identifiant de l'application (plus Token), Twitter a besoin de la clé client et du secret client.

Toute cette valeur, je les fusionne tous dans une chaîne avec au format JSON. Je ne les mets pas tous sur le terrain parce que je pense qu'il ne sera pas nécessaire pour moi d'interroger cette table pour des opérations autres que d'obtenir leur valeur. De plus, j'ai besoin de mettre en place d'autres API dans le futur. C'est pourquoi je ne peux pas créer de champ spécial, car je ne saurai pas quel type de valeur la nouvelle API aura besoin la prochaine fois. C'est pourquoi je préfère les écraser dans un seul champ de ficelle.

Le tableau de la mine est comme ça
Oauth(id, name, setting_parameter, description,...)

+0

u peut me donner un exemple de la façon dont vous stockerez dans une seule chaîne? –

+0

ne pas vérifier la base de données pour un utilisateur spécifié être difficile si l'utilisateur a déjà le compte? –

+0

Je travaille sur php (mais le concept fonctionnera aussi dans d'autres langues). D'abord, je crée un tableau qui est comme ceci '$ arr = array ('token' => 'somevalue', 'api_id' => 'somevalue');' Et puis utiliser json_encode() le tableau avant de le stocker dans la base de données Maintenant champ ressemblerait à quelque chose comme ceci '{" jeton ":" somevalue "," api_id ":" somevalue "}' Je ne comprends pas pourquoi cela serait difficile? Envie d'expliquer plus de détails? – junxiong