【问题标题】:On revoking Google access token for a user, all the token granted to him across devices are getting invalidated在为用户撤销 Google 访问令牌时,跨设备授予他的所有令牌都将失效
【发布时间】:2018-02-20 00:01:43
【问题描述】:

https://developers.google.com/identity/protocols/OAuth2InstalledApp,我知道了-

要以编程方式撤销令牌,您的应用程序会向https://accounts.google.com/o/oauth2/revoke 发出请求,并将令牌作为参数包含在内:

    https://accounts.google.com/o/oauth2/revoke?token={token}

令牌可以是访问令牌或刷新令牌。如果令牌是访问令牌,并且有相应的刷新令牌,刷新令牌也会被撤销。

回答我的问题——

我有同一个 Google 用户在 2 台设备上登录(这意味着我有 2 组针对特定客户端应用的同一个用户的访问/刷新令牌)–

机器 1:访问令牌 - A1,刷新令牌 - R1

机器 2:访问令牌 - A2,刷新令牌 - R2

现在在机器 1 上,我通过 https://accounts.google.com/o/oauth2/revoke?token=A1 撤销了访问权限,这使 {A1,R1} 无效,但我观察到 {A2,R2} 也变得无效。

这是预期的吗?如何保持 {A2,R2} 验证?

【问题讨论】:

    标签: google-drive-api


    【解决方案1】:

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

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

    【讨论】:

    • 我想使机器 1 上的访问令牌和刷新令牌 {A1,R1} 都无效,但我不想使另一台机器 {A2,R2} 上的令牌集无效。
    猜你喜欢
    • 1970-01-01
    • 2022-07-05
    • 2019-04-12
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2015-03-06
    • 2017-06-15
    相关资源
    最近更新 更多