Google 上的操作和令牌返回后帐户链接失败
Actions on Google and Account linking failure after tokens returned
尝试使用 OAuth2 授权代码流在 Web 模拟器中测试身份验证,https://developers.google.com/actions/tools/web-simulator
并且:
https://developers.google.com/actions/develop/identity/oauth2-code-flow
假设您已将您的 Action 设置为需要针对您的授权服务的授权,当您尝试访问您的 Action 时,助手会建议您需要 Link 您的帐户。
在相同的响应中,模拟器提供了一个 URL 用于启动链接过程,请参阅:
"debugInfo": {
"sharedDebugInfo": [
{
"name": "Account Linking Url",
"debugInfo": "https://assistant.google.com/services/auth/handoffs/auth/start?provider=your-google-project-id_dev&scopes=your-scopes&return_url=https://www.google.com/"
}
]
}
调用此 URL(粘贴到浏览器中)将引导您完成 OAuth2 流程,假设所需的用户操作成功 Google 将使用在流.
但后来我得到了:
result_code=FAILURE&result_message=Account+linking+failed
我这边似乎一切正常,但 Google 返回失败。
就我而言,我的令牌端点正在返回我的标准令牌响应对象,其中包括一个 access_token、一个 refresh_token 、一个 expires_in、一个 session_state 和另一个不需要用于此目的的标记但这是我的象征性回应的标准。
当我在 Google 的操场上测试同样的响应时,一切正常:
https://developers.google.com/oauthplayground/
但使用 Google 助理时并非如此 URL:
https://assistant.google.com/services/auth/handoffs/auth/start?provider=your-google-project-id_dev&scopes=your-scopes&return_url=https://www.google.com/
原来是因为助手不喜欢响应对象中的多余属性。
我还没有完全确定什么是允许的,什么是不允许的,但到目前为止你可以:
{
"token_type": "Bearer",
"access_token: "xxx",
"refresh_token": "yyy",
"expires_in": "zzz"
}
有了这些我现在得到:
result_code=SUCCESS
尝试使用 OAuth2 授权代码流在 Web 模拟器中测试身份验证,https://developers.google.com/actions/tools/web-simulator
并且: https://developers.google.com/actions/develop/identity/oauth2-code-flow
假设您已将您的 Action 设置为需要针对您的授权服务的授权,当您尝试访问您的 Action 时,助手会建议您需要 Link 您的帐户。 在相同的响应中,模拟器提供了一个 URL 用于启动链接过程,请参阅:
"debugInfo": {
"sharedDebugInfo": [
{
"name": "Account Linking Url",
"debugInfo": "https://assistant.google.com/services/auth/handoffs/auth/start?provider=your-google-project-id_dev&scopes=your-scopes&return_url=https://www.google.com/"
}
]
}
调用此 URL(粘贴到浏览器中)将引导您完成 OAuth2 流程,假设所需的用户操作成功 Google 将使用在流.
但后来我得到了:
result_code=FAILURE&result_message=Account+linking+failed
我这边似乎一切正常,但 Google 返回失败。
就我而言,我的令牌端点正在返回我的标准令牌响应对象,其中包括一个 access_token、一个 refresh_token 、一个 expires_in、一个 session_state 和另一个不需要用于此目的的标记但这是我的象征性回应的标准。
当我在 Google 的操场上测试同样的响应时,一切正常: https://developers.google.com/oauthplayground/
但使用 Google 助理时并非如此 URL: https://assistant.google.com/services/auth/handoffs/auth/start?provider=your-google-project-id_dev&scopes=your-scopes&return_url=https://www.google.com/
原来是因为助手不喜欢响应对象中的多余属性。
我还没有完全确定什么是允许的,什么是不允许的,但到目前为止你可以:
{
"token_type": "Bearer",
"access_token: "xxx",
"refresh_token": "yyy",
"expires_in": "zzz"
}
有了这些我现在得到:
result_code=SUCCESS