仅针对部分用户的帐户关联问题,大多数用户正常关联帐户。对于链接帐户失败的用户,他们只看到刷新的登录页面为空帐户名和密码。
从我们的服务器日志中,我们发现无法链接的用户,用户成功访问我们的服务器并获得OAUTH代码,但大约15秒后,谷歌服务器访问我们的服务器以交换代码以获取令牌。但是,此时代码已过期。
对于成功链接的用户,发出代码和将其交换为令牌之间的时间约为2秒。
有人知道如何解决问题吗?感谢。
答案 0 :(得分:0)
听起来授权码的到期时间已经设置为大约10-15秒。虽然auth代码的生命周期很短,但10秒方式太短。 recommended lifetime不应超过10分钟,而不是10秒。
请注意,此代码需要从您的服务器发送回用户,从用户发送回Google,然后从Google发送回您的服务器。在某些网络上,每个步骤可能需要几秒钟,特别是因为它必须通过HTTPS完成,这会增加网络和处理开销。每一步只增加几分之一秒 - 但它们可以加在一些设备上!
发布服务器和处理服务器之间也可能存在轻微的时钟偏差 - 可能不会太多,但是当你的生命周期只有几秒钟时,即使是1秒的偏差也可能太多。如果这两者非常偏离,那么这也可能是导致问题的原因。确保服务器上的时钟至少合理地同步。
最佳解决方案是在生成或接受代码时增加服务器上的此超时。您可能认为您为实际接受秒数的配置字段指定了10分钟。