【问题标题】:Actions on Google and Account linking failure after tokens returned令牌返回后 Google 上的操作和帐户关联失败
【发布时间】:2017-03-30 09:22:17
【问题描述】:

尝试使用 OAuth2 授权代码流在 Web 模拟器中测试身份验证,https://developers.google.com/actions/tools/web-simulator

见:https://developers.google.com/actions/tools/testing#testing_account_linking_with_google_home_web_simulator

并且: https://developers.google.com/actions/develop/identity/oauth2-code-flow

如果您已将 Action 设置为要求对您的授权服务进行授权,那么当您尝试访问您的 Action 时,Google 助理会建议您需要关联您的帐户。 在同一响应中,模拟器提供了一个用于启动链接过程的 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

这一切似乎都在我身边,但谷歌返回一个失败。

【问题讨论】:

    标签: oauth oauth-2.0 google-oauth actions-on-google google-home


    【解决方案1】:

    在我的例子中,我的令牌端点返回了我的标准令牌响应对象,其中包括一个 access_token、一个 refresh_token、一个 expires_insession_state 和另一个不需要用于此目的但对我的令牌响应来说是标准的令牌。

    当我在 Google 的操场上测试同样的响应时,它很好: https://developers.google.com/oauthplayground/

    但在使用 Google 助理网址时并非如此: https://assistant.google.com/services/auth/handoffs/auth/start?provider=your-google-project-id_dev&scopes=your-scopes&return_url=https://www.google.com/

    事实证明,Assistant 不喜欢响应对象中多余的属性。

    我还没有完全确定什么是允许的,什么是不允许的,但到目前为止你可以拥有:

    {
        "token_type": "Bearer",
        "access_token: "xxx",
        "refresh_token": "yyy",
        "expires_in": "zzz"
    }
    

    有了这些,我现在得到:

    result_code=SUCCESS
    

    【讨论】:

    • 我遇到了同样的问题。您确定是因为响应对象中的额外字段吗?在我的例子中,我使用 keycloak 来实现授权代码流。我想不出通过丢弃额外信息来修改响应的方法。
    • @iwekesi 在我的情况下,额外的字段肯定是问题所在,如果您的身份验证流程在操场上工作(见答案)而不是在助手中,那么这也可能是您的问题
    • 如您所说,这正是问题所在!非常感谢您了解并告知我们。
    • 我有点好奇为什么谷歌不能忽略“多余的属性”。这看起来很有趣。
    • 我与 GoogleIO 的一位谷歌开发人员谈过此事,他说他们正在努力更换此身份验证流程背后的系统。
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多