在撤消用户的Google访问令牌时,跨设备授予他的所有令牌都将失效

时间:2018-02-19 10:46:06

标签: google-drive-api

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}验证?

1 个答案:

答案 0 :(得分:0)

如此thread中所述,Google会将刷新令牌与正在撤消的访问令牌一起失效,其他实现可能会选择不这样做。然而,其他实现甚至可能根本不提供撤销访问令牌的方法。

  

对于Google,您可以在注销时撤消访问令牌,如https://developers.google.com/accounts/docs/OAuth2WebServer#tokenrevoke中所述,但它也会撤消相关的刷新令牌。然后,您必须再次通过授权代码流以获取新的刷新令牌,您可以尝试使用prompt = none来避免提示用户。