2011-03-24 3 views
3

J'utilise actuellement Oauth pour permettre à un utilisateur de se connecter via Foursquare, je crée alors une nouvelle session pour cet utilisateur. Si l'utilisateur est nouveau dans le système, il lui est demandé de se connecter via Hunch, ce qui permet de générer un profil utilisateur basé sur les informations des deux systèmes. Je les ai connectés à chaque application séparément, mais comment puis-je associer l'utilisateur connecté avec Foursquare à celui de Hunch. Mon idée était de créer une référence à l'ID de session dans le modèle utilisateur ou d'utiliser l'ID de session comme paramètre pour la connexion de l'intuition, mais je ne suis pas sûr que ce soit la meilleure idée. Y a-t-il un autre moyen de créer l'association?Méthodes de connexion Python

Répondre

0

La meilleure façon de le faire serait quelque chose comme ce qui suit:

  1. Envoyer la utilisateur à foursquare pour se connecter
  2. Lorsque l'utilisateur revient, créez un enregistrement dans le magasin de données pour lui.
  3. Envoyez l'utilisateur à Hunch pour vous connecter, mais incluez l'ID de l'enregistrement que vous avez créé à l'étape 2 dans l'URL continue.
  4. Lorsque l'utilisateur revient, utilisez l'ID incorporé dans l'URL pour ajouter les informations de l'utilisateur de Hunch à son enregistrement utilisateur.
+0

J'ai essayé d'ajouter l'ID dans l'URL continuer mais il cause à l'échec par exemple rediriger vers mon Hunch est 'http://hunch.com/authorize/v1/?app_id=111&next=http:// localhost: 8086 /? access_token = {{access_token}}/'L'URL renvoyée est' http: // localhost: 8086 /? access_token = aaa? auth_token_key = aaa & user_id = aa & next = http% 3A% 2F% 2Flocalhost% 3A8086% 2F% 3Faccess_token% qq% 2F' mais lors de l'analyse, il ne trouve pas la clé auth_token_key – qwop

+0

@qwop Il semble que hunch ne code pas les URL correctement. Avez-vous essayé de le transmettre d'une autre manière - comme dans le cadre de l'URL? Par exemple, http://foo.com/auth/user_id? –

0

Vous pouvez créer une association parente de sorte que SiteUser soit le parent de FoursquareAuth et HunchAuth.

Lorsque l'utilisateur se connecte d'abord avec Foursquare vous créez le modèle SiteUser puis créer le modèle FoursquareAuth avec parent=just_created_user. Ensuite, lorsque vous envoyez l'utilisateur à l'authentification via l'intuition, vous incluez l'ID de l'utilisateur ou un ID de session dans le paramètre de rappel. Lorsque le rappel se produit, vous obtenez la clé de l'utilisateur et créer HunchAuth avec parent=previously_created_user.

Le modèle SiteUser contient les informations combinées des deux sources (nom, emplacement, dernier enregistrement, etc.). Les modèles *Auth ne contiennent que les identifiants uniques garantis fournis par chaque fournisseur (user_id, access_token, etc.). Ainsi, si vous avez l'objet utilisateur, vous pouvez trouver les données d'authentification Foursquare ou Hunch (en utilisant un filtre ancêtre), et vous pouvez trouver un utilisateur en chargeant un modèle *Auth et en récupérant son parent().

(note: j'appelle le modèle SiteUser à ne pas confondre avec l'objet User disponible dans App Engine)