Oauth 2.0 帐户链接与谷歌的行动

Oauth 2.0 帐户链接与谷歌的行动,oauth-2.0,actions-on-google,Oauth 2.0,Actions On Google,我面临一个关于谷歌行动中账户链接的问题: 我能够对用户进行身份验证并访问他的电子邮件地址和用户名,但是在此之后,我如何将用户重定向回google助手并关闭他进行身份验证的浏览器 任何帮助都将不胜感激 更新:嘿,囚犯,非常感谢。 我照你说的做了,是的,现在它确实重定向到google.com,但是当我在模拟器中测试它时,没有结果 链接是: https://www.google.co.in/?gws_rd=cr&dcr=0&ei=z77fWbjQGIXxvATs_oqwBA 现在如果

我面临一个关于谷歌行动中账户链接的问题:

我能够对用户进行身份验证并访问他的电子邮件地址和用户名,但是在此之后,我如何将用户重定向回google助手并关闭他进行身份验证的浏览器

任何帮助都将不胜感激

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

链接是:

https://www.google.co.in/?gws_rd=cr&dcr=0&ei=z77fWbjQGIXxvATs_oqwBA
现在如果我输入talk to。。。它再次向我显示您需要链接帐户的消息

在设备中,浏览器会自动关闭并显示登录,但当我键入一个意图时,它不会被识别

如果你能给我指出正确的方向那就太好了!(我不确定,但我可能正处于您提到的代币交换阶段,但我不知道如何继续!)

更新2:根据要求,我遵循的整个流程如下: 这是我从debugInfo收到的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/
当我将其粘贴到浏览器中时,我在授权端点收到的请求是:

ImmutableMultiDict([
  ('response_type', 'code'), 
  ('client_id', ****.apps.googleusercontent.com'), 
  ('redirect_uri', 'https://oauth-redirect.googleusercontent.com/r/****'), 
  ('scope', 'email'), 
  ('state', ' CtcCQUxWM2ROU3hNMjl4LUItVXhQSGd4THRMLU4yNExnb3lYbGRKQnQwa3NwTVFva19NUWpYNE5jNGJURzIyZFN3RDBXd2d4enFGVWJGb0Q0ZW1vaS1OaFdkaHdhb05HZ2xlWTR6SllKVlRWYktwd09faklyUTVheFhQbGw2dmVKYzVFTk05N3B1QkxaZG41RVdHN0wyTktvRFdCYzFPVFBzM1dQUlFtN2RmM1VtRU4****(state)')
])
我发回的响应(重定向url):

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/***********')
])
现在我可以访问电子邮件地址和其他详细信息

我从此处重定向到的url:

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
我还添加了/token/google作为AoG中的令牌URL。它在heroku中被检测到,但是我的代码中从未收到此请求


注意:我正在使用python flask,并在heroku上托管我的应用程序。一旦您对用户进行了身份验证,您需要将临时身份验证代码返回Google。稍后,Google将用这个身份验证代码交换一个访问令牌和一个刷新令牌,但你还没有做到。重要的是,这段代码必须是唯一的,并且,稍后,您将能够识别它是用于什么用户的。代码应在有限的时间内有效-10分钟是公认的时间范围

在Google作为登录的一部分发送给您的请求中,他们提供了一个
redirect\u uri
和一个
state
作为参数。您需要在答复中使用这些选项。(
state
可以是任何东西-您不必关心它是什么,您只需将它与重定向一起发送回去。它的目的是通过防止重播攻击来提高安全性。)

验证
重定向\u uri
是否具有以下格式

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
其中
您的\u项目\u ID
是。。。你猜对了,你项目的ID。您可以在云控制台中找到这一点

然后,您将使用几个附加参数将用户重定向到此URL:

https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?code=AUTHORIZATION_CODE&state=STATE_STRING
其中
您的项目\u ID
如上所述,
授权\u code
是您生成的代码,
状态\u字符串
是您在请求中发送的
状态
参数的值


有关详细信息,请参见

能否更新问题以显示您从谷歌获得的URL?(屏蔽客户端id、重定向中的项目id以及名称中包含“secret”的任何参数值等内容。)让我们确保收到我们认为收到的请求。另外,请包括您重定向到的URL(再次屏蔽您的项目ID)。Hey prisioner已按要求更新。如果您需要进一步澄清,请告诉我!