【问题标题】:Google home action account link failedGoogle Home 操作帐号关联失败
【发布时间】:2018-02-06 01:43:30
【问题描述】:

只有部分用户的帐号关联问题,大部分用户正常关联帐号。对于链接帐户失败的用户,他们只会看到登录页面刷新为空帐户名和密码。

从我们的服务器日志中,我们发现对于链接失败的用户,该用户成功访问了我们的服务器并获得了 OAUTH 代码,但大约 15 秒后,谷歌服务器访问了我们的服务器以将代码交换为令牌。但是,此时代码已过期。

对于成功链接的用户,从发布代码到兑换令牌的时间约为 2 秒。

有人知道如何解决这个问题吗?谢谢。

【问题讨论】:

  • 致投票结束的人:问题与主题有关。
  • 您服务器上的时间是否正确?
  • 我们检查了时间,它是正确的。谢谢。
  • 请更新您的问题,显示您用于连接到身份验证服务器的令牌的设置。您为 [AuthorizationCodeLifetime] [AccessTokenLifetime] [AbsoluteRefreshTokenLifetime] 设置了哪些值
  • AuthorizationCodeLifetime 是 7 天,AccessTokenLifetime 是 1 个月,AbsoluteRefreshTokenLifetime 是 3 个月。我们的 OAuth 服务器没有向 Google 返回代码过期错误。

标签: oauth-2.0 actions-on-google


【解决方案1】:

听起来授权码的过期时间已设置为大约 10-15 秒。虽然身份验证代码的生命周期应该很短,但 10 秒方式太短了。 recommended lifetime 不应超过 10 分钟,而不是 10 秒。

请考虑此代码需要从您的服务器发送回用户,从用户发送到 Google,然后从 Google 发送到您的服务器。在某些网络上,每个步骤可能需要几秒钟以上的时间,特别是因为它必须通过 HTTPS 完成,这会增加网络和处理开销。每个步骤只增加几分之一秒 - 但它们可以在某些设备上加起来!

发布服务器和处理服务器之间也可能存在轻微的时钟偏差 - 可能不会很大,但是当您的生命周期只有几秒钟时,即使 1 秒的偏差也可能太大了。如果两者非常不平衡,那么这也可能是您的问题的原因。确保服务器上的时钟至少合理同步。

最好的解决方案是在您生成或接受代码时在您的服务器上增加此超时时间。您可能认为您为实际接受秒的配置字段指定了 10 分钟。

【讨论】:

  • 正如@DaimTo 所指出的,时钟偏差也是一种可能。就其本身而言,大的偏斜可能是一个问题。小的偏差会加剧代码生命周期短的问题。
  • 感谢您的回答。我们检查了我们的服务器时间,它是正确的。而我们的代码过期时间是7天,我们的服务器通过代码正确地向谷歌服务器返回了token。
  • 我很困惑。您说“此时代码已过期”,即 15 秒后。如果代码在 7 天后过期 - 它是如何在 15 秒后过期的?您能否更新您的原始问题以更清楚地了解正在发生的事情以及您所看到的内容? (而且 7 天对于代码有效来说太长了。)
  • 我的原话是“时间太长了”。很抱歉没有说清楚,因为英语不是我的母语。 Google 首先调用我们的 api 来获取 OAUTH 代码,我们的服务器正确且快速地返回。然后大约 15 秒后,Google 再次调用我们的 api 以代码交换 OATUH 令牌,我们的服务器也正确快速地返回,我们的服务器没有向 Google 返回代码过期错误。实际上基于这些,我只能推迟Google Home服务器或APP对于某些用户请求有问题吗?
猜你喜欢
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多