如果我为用户保存了刷新令牌,我就不会有兴趣尝试获取新令牌。谷歌只给他们的代币一个小时的酝酿期,这让我完全措手不及。这意味着刷新令牌几乎是必需的,除非你希望你的用户必须每小时重新登录一次网站或移动应用程序。
所以现在我有一群没有刷新令牌的用户。谷歌没有为我提供一个新的approval_prompt=force
、prompt=none
和access_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
。
我通过这样做解决了这个问题:
- 点击API和服务https://console.cloud.google.com/apis/credentials
- 输入";OAuth同意屏幕"
- 更改应用程序的名称,例如:";我的名字App2"
- 现在,再次在应用程序(
https://accounts.google.com/o/oauth2/v2/auth?...
)上执行POST请求,并查看新的refresh_token