帐户与我面临的有关帐户上谷歌在操作连接的问题对谷歌

问题描述:

行动链接:帐户与我面临的有关帐户上谷歌在操作连接的问题对谷歌

我能够对用户进行认证,并然而在此之后访问他的电子邮件地址和用户名,我怎样才能将用户重定向回到谷歌助手,并关闭他的身份验证浏览器?

任何帮助将不胜感激!

更新:嘿囚犯非常感谢。 我做了你所说的,现在它确实重定向到google.com,但没有result_code = SUCCESS,当我在模拟器中测试它时。

的链接是:

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

现在,如果我输入再跟......它让我看到您需要将您的帐户关联的消息!

在设备中浏览器自动关闭,但它显示SIGNING_IN,但是当我键入意图时,它不被识别。

如果你能指引我正确的方向,那将是很棒的! (我不确定,但我可能会在您提到的令牌交换阶段,但我不知道如何继续!)

更新2:根据要求,我要求的整个流程如下: This是,我从debuginfo软收到的网址:我送回

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

响应(REDIRECT_URL):

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

当我粘贴在浏览器中,我收到的授权端点的请求:

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 

当它到达我的终点再次请求参数是:

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

现在我能够访问电子邮件地址和其他细节

的网址,我重定向到从这里:

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

这重定向我:

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

编辑3:我检查网络日志:

result_code=FAILURE&result_message=Account+linking+failed 

我还添加/令牌/谷歌如AOG令牌URL。它在heroku中被检测到,但是我从未在我的代码中收到这个请求。

注:我使用python瓶和托管在Heroku

+0

可以更新的问题,说明你是从谷歌获得的网址是什么? (掩盖掉诸如client_id之类的东西,来自重定向的项目ID以及名称中具有“秘密”的任何参数值。)让我们确保我们获得了我们认为我们正在获得的请求。还请包括您重定向到的URL(再次,掩盖您的项目ID)。 – *er

+0

嘿,prisioner根据要求更新。让我知道你是否需要进一步澄清! – charlie

一旦你验证过的用户我的应用程序,你需要回到返回临时授权码给谷歌。之后,Google会交换此授权码以获得访问令牌和刷新令牌,但您还没有。重要的部分是,这段代码需要是唯一的,并且稍后,您将能够识别它的用途。代码应该在有限的时间内有效--10分钟是通常可接受的时间范围。

在Google作为登录的一部分发送给您的请求中,他们提供了redirect_uristate作为参数。你需要在你的回复中使用这些。 (state可以是任何东西 - 你不应该在乎它是什么,你只是将它发送回你的重定向。其目的是通过防止重播攻击来提高安全性。)

确认redirect_uri具有形式

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

哪里YOUR_PROJECT_ID是......你猜对了,你的项目的ID。您可以在云端控制台中找到它。

然后,您会用一些额外的参数,将用户重定向到这个网址:

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

YOUR_PROJECT_ID被如上所述,AUTHORIZATION_CODE是你生成的代码,并STATE_STRING是值了state您在请求中发送的参数。

有关详细信息,你可以看到https://developers.google.com/actions/identity/oauth2-code-flow#handle_user_sign-in