【问题标题】:How to detect when an OAuth2 refresh-token expired如何检测 OAuth2 刷新令牌何时过期
【发布时间】:2019-12-14 10:46:15
【问题描述】:

访问 Google-Drive 时,访问令牌可能会过期,我们可以使用刷新令牌来获取新的访问令牌。但是,刷新令牌本身停止工作或过期有很多可能的原因,请参阅:

https://developers.google.com/identity/protocols/OAuth2#expiration

所以我的问题是,如果刷新令牌在 6 个月后过期会发生什么,我该如何检测它?刷新访问令牌的请求是否失败并显示 403 禁止,还是返回包含错误消息的 JSON 或其他内容?

不幸的是,很难找到有关此的任何信息,并且要对其进行测试,必须等待 6 个月...

解决方案:

感谢 Gary Archers 的回答,我可以使用无效的刷新令牌产生这种情况,这是我得到的响应,也许它可以帮助其他人:

HTTP-status-code: 400
JSON:
{
  "error": "invalid_grant",
  "error_description": "Bad Request"
}

【问题讨论】:

  • 很遗憾,现阶段还没有直接获取刷新令牌过期时间的方法。因此,作为当前的解决方法,我正在使用以下方法。 1. 检索刷新令牌时,检索检索到的时间。 2. 当使用刷新令牌检索访问令牌时,确认错误。您的问题已经提到了这一点。如果这些不是您想要的方向,我深表歉意。
  • @Tanaike - 我已经怀疑,没有“官方”的方法可以找到它,我只是希望有人遇到这种情况并且可以告诉我尝试刷新访问时服务器如何响应-token 带有过期的刷新令牌。
  • 感谢您的回复。很抱歉我的建议对您的情况没有用处。
  • 感谢您的回复。

标签: oauth oauth-2.0 google-oauth onedrive refresh-token


【解决方案1】:

我见过的几乎所有实现都返回一个已知的错误代码“invalid_grant”,您可以检查它。您可以通过在发送刷新令牌授权消息时向刷新令牌添加字符来测试这一点。请参阅this blog post of mine 上的第 31 步

【讨论】:

  • 哇,这是我见过的最全面的例子,这对我帮助很大,谢谢!
猜你喜欢
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多