有没有办法在没有最新令牌的情况下撤消所有Google OAuth2刷新令牌?

时间:2013-09-02 17:48:36

标签: google-oauth

如果我为我的用户保存了刷新令牌,我就没有兴趣尝试获取新的令牌。我被谷歌完全措手不及,只给了他们的标记一小时的怀孕。这意味着刷新令牌几乎是必需的,除非您希望用户每小时重新登录一次站点或移动应用程序。

所以现在我有一堆没有刷新令牌的用户。 Google未向我提供approval_prompt=forceprompt=none以及access_type=offline的新邮件。

我需要强制Google发送刷新令牌,尽管事先发送了一个或多个令牌。一个人如何在没有开头令牌的情况下撤销刷新令牌?

我宁愿不要让每个用户手动撤销它。这应该是务实的 - 特别是考虑到移动开发。

如果有可用的话,我想专注于javascript解决方案。

我看到之前发布过相同问题的帖子,但它处于完全不同的背景下,从未收到与Google OAuth2.0相关的答案:
how to refresh or revoke OAuth2.0 access/refresh_token, when no refresh token available?

3 个答案:

答案 0 :(得分:2)

他们说

https://developers.google.com/accounts/docs/OAuth2WebServer#refresh

可以通过发送包含 刷新令牌(您没有)的请求以及访问令牌来撤销新令牌。

  

令牌可以是访问令牌或刷新令牌。如果令牌是访问令牌并且它具有相应的刷新令牌,则还将撤销referh令牌。

答案 1 :(得分:1)

而不是传递approval_prompt=force,而是需要传递scope=consent,这将使用户再次同意离线访问 - 这反过来会为您生成新的刷新令牌。

答案 2 :(得分:0)

在2020年,这不能解决问题。我需要在OAuth2中为Google API生成一个新的refresh_token

我通过以下方法解决了该问题:

  1. 点击API和服务https://console.cloud.google.com/apis/credentials
  2. 进入“ OAuth同意屏幕”。
  3. 更改应用程序的名称,例如:“ My NameApp2”。
  4. 现在,再次在您的应用(https://accounts.google.com/o/oauth2/v2/auth?...)上执行POST请求,然后查看新的refresh_token