2017-10-12 6 views
1

Je face à un problème en ce qui concerne l'association des comptes dans les actions sur Google:compte des liens avec des actions sur Google

Je suis en mesure d'authentifier l'utilisateur et accéder à son adresse e-mail et nom d'utilisateur mais après comment puis-je rediriger l'utilisateur à l'assistant google et fermez le navigateur où il a été authentifié?

Toute aide sera appréciée!

Mise à jour: Hey Prisoner merci beaucoup pour cela. J'ai fait ce que vous avez dit et oui maintenant il redirige vers google.com mais sans result_code = SUCCESS quand je l'ai testé dans le simulateur.

Le lien est

https://www.google.co.in/?gws_rd=cr&dcr=0&ei=z77fWbjQGIXxvATs_oqwBA 

Maintenant, si je tape parler ... encore une fois, il me montre le message que vous devez lier votre compte!

Dans l'appareil, le navigateur se ferme automatiquement et SIGNING_IN s'affiche, mais lorsque je tape une intention, il n'est pas reconnu.

Ce serait génial si vous pouviez me diriger dans la bonne direction! (Je ne suis pas sûr mais je pourrais être au stade d'échange de jeton que vous avez mentionné, mais je n'ai aucune idée de la façon de procéder!)

Mise à jour 2: Comme demandé le flux entier que je suis: est l'URL que je reçois de debugInfo:

https://assistant.google.com/services/auth/handoffs/auth/start?account_name=cha***@gmail.com&provider=***_dev&scopes=email&return_url=https://www.google.com/ 

Quand je coller dans le navigateur la demande que je reçois au point final d'autorisation est:

ImmutableMultiDict([ 
    ('response_type', 'code'), 
    ('client_id', ****.apps.googleusercontent.com'), 
    ('redirect_uri', 'https://oauth-redirect.googleusercontent.com/r/****'), 
    ('scope', 'email'), 
    ('state', ' CtcCQUxWM2ROU3hNMjl4LUItVXhQSGd4THRMLU4yNExnb3lYbGRKQnQwa3NwTVFva19NUWpYNE5jNGJURzIyZFN3RDBXd2d4enFGVWJGb0Q0ZW1vaS1OaFdkaHdhb05HZ2xlWTR6SllKVlRWYktwd09faklyUTVheFhQbGw2dmVKYzVFTk05N3B1QkxaZG41RVdHN0wyTktvRFdCYzFPVFBzM1dQUlFtN2RmM1VtRU4****(state)') 
]) 

la réponse (REDIRECT_URL) que je renverrai :

https://accounts.google.com/o/oauth2/v2/auth?scope=email&response_type=code&redirect_uri=https%3A%2F%2F******.herokuapp.com%2Fcallback%2Fgoogle&client_id=****.apps.googleusercontent.com 

Quand il atteint mon point final à nouveau les arguments de requête sont:

ImmutableMultiDict([ 
    ('code', '4/***********') 
]) 

Maintenant, je suis en mesure d'accéder à l'adresse e-mail et d'autres détails

L'URL que je réoriente à partir d'ici:

https://oauth-redirect.googleusercontent.com/r/****?code=abcdefgh&state=CtcCQUxWM2ROU3hNMjl4LUItVXhQSGd4THRMLU4yNExnb3lYbGRKQnQwa3NwTVFva19NUWpYNE5jNGJURzIyZFN3RDBXd2d4enFGVWJGb0Q0ZW1vaS1OaFdkaHdhb05HZ2xlWTR6SllKVlRWYktwd09faklyUTVheFhQbGw2dmVKYzVFTk05N3B1QkxaZG41RVdHN0wyTktvRFdCYzFPVFBzM1dQUlFtN2RmM1VtRU4****(state) 

Cela me redirige vers:

https://www.google.co.in/?gws_rd=cr&dcr=0&ei=5c_fWdfKNYndvASO7o6ACA 

Edit 3: J'ai vérifié les journaux du réseau:

result_code=FAILURE&result_message=Account+linking+failed 

J'ai aussi ajouté/jeton/google comme l'URL jeton dans AoG. Il est détecté dans heroku mais je ne reçois jamais cette requête dans mon code.

Note: J'utilise flacon de python et l'hébergement de mon application sur Heroku

+0

Pouvez-vous mettre à jour la question de montrer l'URL que vous obtenez de Google? (Masquez des choses comme le client_id, votre ID de projet de la redirection, et toutes les valeurs de paramètre qui ont "secret" dans le nom.) Faisons en sorte que nous obtenons la demande que nous pensons obtenir. Veuillez également inclure l'URL vers laquelle vous redirigez (masquer à nouveau votre ID de projet). – Prisoner

+0

Hey prisioner mis à jour comme demandé. Faites-moi savoir si vous avez besoin de plus de précisions! – charlie

Répondre

2

Une fois que vous avez authentifié l'utilisateur, vous devrez retourner un code d'autorisation temporaire à Google. Plus tard, Google échangera ce code d'autorisation contre un jeton d'accès et un jeton d'actualisation, mais vous n'y êtes pas encore. La partie importante est que ce code doit être unique et que, plus tard, vous serez en mesure de reconnaître pour quel utilisateur il est destiné.Le code devrait être valide pour une durée limitée - 10 minutes est un délai généralement accepté.

Dans la demande que Google vous a envoyée dans le cadre de la connexion, ils ont fourni un redirect_uri et un state comme paramètres. Vous devrez les utiliser dans votre réponse. (state peut être n'importe quoi - vous ne devriez pas vous soucier de ce que c'est, vous allez simplement le renvoyer avec votre redirection.)

Vérifiez que le redirect_uri a le forme

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID 

YOUR_PROJECT_ID est ... vous l'aurez deviné, l'ID de votre projet. Vous pouvez le trouver dans la console cloud.

Vous pourrez ensuite rediriger l'utilisateur vers cette URL avec quelques paramètres supplémentaires:

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?code=AUTHORIZATION_CODE&state=STATE_STRING 

YOUR_PROJECT_ID est comme indiqué ci-dessus, AUTHORIZATION_CODE est le code que vous avez généré, et STATE_STRING est la valeur de la state paramètre que vous avez été envoyé dans la demande.

Pour plus de détails, vous pouvez voir https://developers.google.com/actions/identity/oauth2-code-flow#handle_user_sign-in