有没有任何方法可以在没有最新令牌的情况下撤销用户的所有Google OAuth2刷新令牌



如果我为用户保存了刷新令牌,我就不会有兴趣尝试获取新令牌。谷歌只给他们的代币一个小时的酝酿期,这让我完全措手不及。这意味着刷新令牌几乎是必需的,除非你希望你的用户必须每小时重新登录一次网站或移动应用程序。

所以现在我有一群没有刷新令牌的用户。谷歌没有为我提供一个新的approval_prompt=forceprompt=noneaccess_type=offline

我需要强制谷歌发送一个刷新令牌,尽管之前已经发送了一个或多个刷新令牌。一个人如何在没有令牌的情况下撤销刷新令牌?

我宁愿不要求每个用户手动撤销它。这应该务实地进行,尤其是考虑到移动技术的发展。

如果有javascript解决方案的话,我想重点介绍一下。

我看到之前的一篇帖子也有同样的问题,但它的背景完全不同,从未收到过与谷歌OAuth2.0有关的答案:
当没有可用的刷新令牌时,如何刷新或撤销OAuth2.0访问/refresh_token?

您需要传递prompt=consent,而不是传递approval_prompt=force,这将使用户再次同意Offline Access,从而为您生成新的刷新令牌。

他们说

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

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

该令牌可以是访问令牌或刷新令牌。如果该令牌是访问令牌,并且具有相应的刷新令牌,则refresh令牌也将被吊销。

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

我通过这样做解决了这个问题:

  1. 点击API和服务https://console.cloud.google.com/apis/credentials
  2. 输入";OAuth同意屏幕"
  3. 更改应用程序的名称,例如:";我的名字App2"
  4. 现在,再次在应用程序(https://accounts.google.com/o/oauth2/v2/auth?...)上执行POST请求,并查看新的refresh_token

最新更新