Google 上的操作 - 帐户链接过程在授权 URL 之前命中令牌 URL?
Actions on Google - Account Linking process hits Token URL before Authorize URL?
我们正在努力支持 'traditional' 帐户链接流程,因为它似乎是最通用的目的,让我们有机会浮出水面的条款和条件,我们认为这将是最重要的。
但是在针对初学者的智能助理移动应用程序中进行测试,它在我们的 Dev 中的 Actions 应用程序中对大多数用户来说失败了 - 在用户看到智能助理中的 Google 驱动的弹出窗口之后带有 "LINK ACCOUNTS" 选项的应用程序 - 他们点击该选项,我们的授权屏幕不会出现。
Actions 支持人员查看了我们的帐户链接配置,没有发现任何问题。
一些使用较新 Android 手机的测试用户确实会看到我们的授权屏幕,但大多数人不会。
如果我们通过粘贴到同一设备上的浏览器来测试授权 URL - 它总是显示得很好。
奇怪的是 - 如果我们在 失败案例 期间查看我们的 Web 服务器日志,我们看到的唯一命中是我们的 'TOKEN URL',而我的理解是新链接的用户应该在点击令牌之前点击我们的 'Authorization URL'。
正如预期的那样,成功的案例确实首先获得了我们的授权 URL。
如果有人能回答以下任何问题,请随时留言:
有什么想法会导致这里出现问题吗?
或者我们可以深入调查的方法?
应用程序是否需要进行 Alpha 测试或类似测试才能使用帐户链接?
是否normal/expected为从未成功关联帐户的用户打TokenURL?
任何人都可以确认在这种情况下令牌获取响应应该是什么吗? (也许我们没有以让另一端满意的方式回应)
有人有 dummy/HelloWorld 帐户链接 Web 端点供我们测试吗? (天哪,这对开发者社区来说很方便!)
我不知道到底发生了什么,但有一些关于正在发生的事情以及调查途径的提示。我假设您只使用 OAuth 进行帐户链接。如果您正在执行 "Google Sign In for Assistant and OAuth" 的组合,那可能会改变一些事情。解决您的一些问题:
什么会导致助手转到令牌端点而不是 Auth 端点?
除非它已经有一个令牌,否则它不会去令牌端点。我能想到几个可能的场景:
如果它要进行身份验证,因为它已经被授权而获得令牌,所以不会弹出 window。 (但您表示它不会转到该页面。)
如果相关帐户已通过其他方式获得项目授权。可以查看https://myaccount.google.com/permissions是否已经授权
如果您之前使用此帐户对其进行过测试,并且从那时起它就有一个令牌。如果是这样,它应该列在 https://myaccount.google.com/permissions。应该是吧。
如果您使用的不是您认为在相关设备上使用的帐户。
如何调查?
一旦你仔细检查了一些更明显的东西(使用正确的帐户?):
- 查看发送到令牌端点的内容
- 令牌是不是很眼熟?调用之间是否相同?不同账户之间是否相同?
- 您是否记录发行的令牌?可以吗?
- 与令牌一起发送的其他信息(例如
client_id
和 client_secret
呢?
是否需要在 Alpha 中?
我不确定。最后我查了一下,没有。我确实认为它不再适用于模拟器,这很烦人,但不需要在 Alpha 中。
但是,这确实让检查变得有点困难,因为没有目录页面可以告诉您该帐户是否已链接。如果您的应用是:https://myaccount.google.com/permissions
,您需要转到该帐户的链接应用列表以删除您的应用:
这样正常吗?
我不这么认为。它不应该到达令牌端点,除非它有一个授权码或刷新令牌来交换。它必须从某个地方得到 code/token。
你应该如何回应?
如果您获得无效的授权代码或刷新令牌,或者令牌端点提供的任何其他信息与其应有的不匹配,您必须return HTTP 错误代码 400 "Bad Request" 并在正文中包含 JSON
{"error": "invalid_grant"}
这应该强制它通过用户重新授权。
有public测试服务器吗?
Auth0 不完全是 public,但基本使用是免费的,非常适合测试目的。
我们正在努力支持 'traditional' 帐户链接流程,因为它似乎是最通用的目的,让我们有机会浮出水面的条款和条件,我们认为这将是最重要的。
但是在针对初学者的智能助理移动应用程序中进行测试,它在我们的 Dev 中的 Actions 应用程序中对大多数用户来说失败了 - 在用户看到智能助理中的 Google 驱动的弹出窗口之后带有 "LINK ACCOUNTS" 选项的应用程序 - 他们点击该选项,我们的授权屏幕不会出现。
Actions 支持人员查看了我们的帐户链接配置,没有发现任何问题。
一些使用较新 Android 手机的测试用户确实会看到我们的授权屏幕,但大多数人不会。
如果我们通过粘贴到同一设备上的浏览器来测试授权 URL - 它总是显示得很好。
奇怪的是 - 如果我们在 失败案例 期间查看我们的 Web 服务器日志,我们看到的唯一命中是我们的 'TOKEN URL',而我的理解是新链接的用户应该在点击令牌之前点击我们的 'Authorization URL'。 正如预期的那样,成功的案例确实首先获得了我们的授权 URL。
如果有人能回答以下任何问题,请随时留言:
有什么想法会导致这里出现问题吗?
或者我们可以深入调查的方法?
应用程序是否需要进行 Alpha 测试或类似测试才能使用帐户链接?
是否normal/expected为从未成功关联帐户的用户打TokenURL?
任何人都可以确认在这种情况下令牌获取响应应该是什么吗? (也许我们没有以让另一端满意的方式回应)
有人有 dummy/HelloWorld 帐户链接 Web 端点供我们测试吗? (天哪,这对开发者社区来说很方便!)
我不知道到底发生了什么,但有一些关于正在发生的事情以及调查途径的提示。我假设您只使用 OAuth 进行帐户链接。如果您正在执行 "Google Sign In for Assistant and OAuth" 的组合,那可能会改变一些事情。解决您的一些问题:
什么会导致助手转到令牌端点而不是 Auth 端点?
除非它已经有一个令牌,否则它不会去令牌端点。我能想到几个可能的场景:
如果它要进行身份验证,因为它已经被授权而获得令牌,所以不会弹出 window。 (但您表示它不会转到该页面。)
如果相关帐户已通过其他方式获得项目授权。可以查看https://myaccount.google.com/permissions是否已经授权
如果您之前使用此帐户对其进行过测试,并且从那时起它就有一个令牌。如果是这样,它应该列在 https://myaccount.google.com/permissions。应该是吧。
如果您使用的不是您认为在相关设备上使用的帐户。
如何调查?
一旦你仔细检查了一些更明显的东西(使用正确的帐户?):
- 查看发送到令牌端点的内容
- 令牌是不是很眼熟?调用之间是否相同?不同账户之间是否相同?
- 您是否记录发行的令牌?可以吗?
- 与令牌一起发送的其他信息(例如
client_id
和client_secret
呢?
是否需要在 Alpha 中?
我不确定。最后我查了一下,没有。我确实认为它不再适用于模拟器,这很烦人,但不需要在 Alpha 中。
但是,这确实让检查变得有点困难,因为没有目录页面可以告诉您该帐户是否已链接。如果您的应用是:https://myaccount.google.com/permissions
,您需要转到该帐户的链接应用列表以删除您的应用:这样正常吗?
我不这么认为。它不应该到达令牌端点,除非它有一个授权码或刷新令牌来交换。它必须从某个地方得到 code/token。
你应该如何回应?
如果您获得无效的授权代码或刷新令牌,或者令牌端点提供的任何其他信息与其应有的不匹配,您必须return HTTP 错误代码 400 "Bad Request" 并在正文中包含 JSON
{"error": "invalid_grant"}
这应该强制它通过用户重新授权。
有public测试服务器吗?
Auth0 不完全是 public,但基本使用是免费的,非常适合测试目的。