从https://developers.google.com/identity/protocols/OAuth2InstalledApp开始,我知道 -
要以编程方式撤消令牌,您的应用程序会向https://accounts.google.com/o/oauth2/revoke发出请求,并将令牌作为参数包含在内:
https://accounts.google.com/o/oauth2/revoke?token={token}
令牌可以是访问令牌或刷新令牌。如果令牌是访问令牌并且它具有相应的刷新令牌,则刷新令牌也将被撤销。
来到我的问题 -
我在2台设备上登录了相同的Google用户(这意味着我为同一个客户端应用提供了2套访问/刷新令牌) -
机器1:访问令牌 - A1,刷新令牌 - R1
机器2:访问令牌 - A2,刷新令牌 - R2
现在在机器1上,我通过https://accounts.google.com/o/oauth2/revoke?token=A1撤销了访问权限,这使{A1,R1}无效,但我观察到的是{A2,R2}也会失效。
这是预期的吗?如何保持{A2,R2}验证?
答案 0 :(得分:0)
如此thread中所述,Google会将刷新令牌与正在撤消的访问令牌一起失效,其他实现可能会选择不这样做。然而,其他实现甚至可能根本不提供撤销访问令牌的方法。
对于Google,您可以在注销时撤消访问令牌,如https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke中所述,但它也会撤消相关的刷新令牌。然后,您必须再次通过授权代码流以获取新的刷新令牌,您可以尝试使用prompt = none来避免提示用户。