Uber OAuth2:刷新令牌调用 returns invalid_grant 错误

Uber OAuth2: Refresh Token Call returns invalid_grant error

优步 OAuth2 刷新令牌调用 returns 出现以下错误:

invalid_grant

invalid_grant The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.

重定向 URI、刷新令牌、客户端 ID 没有改变。除了中断先前刷新尝试的网络问题或服务器问题之外,还有什么可能导致此错误?

我从另一个 post 那里读到了以下内容。是真的吗?

You'll get an "invalid_grant" error if you try to refresh when the token isn't expired.

解决方案

浏览 Uber OAuth2 登录页面后,浏览器一直在存储登录 cookie,因此将其应用于后续的 OAuth2 尝试,这导致服务器使用与其他用户的 Uber 登录相关联的旧 cookie。这导致服务器为那些较旧的优步登录生成新的访问和刷新令牌(即使他们没有像其他用户那样使用),使原始刷新令牌无效。

处理这种极端情况的正确方法有两个。首先,您希望在用户使用完您的计算机后尽快清除 Uber 登录 cookie。其次,无论何时您获得 OAuth2 令牌,它都应该检查现有凭据(例如通过匹配 Uber driver_id 进行检查)并使用新获得的 access/refresh 令牌更新这些凭据 - 这样即使发生此事件时,您会自动更新新令牌。

可能的问题是刷新令牌无效。刷新令牌在颁发新的访问令牌时失效,因此您需要始终保留最新的刷新令牌。授权新的访问令牌并使用最新的刷新令牌重试。