【问题标题】:Google API OAuth2: handle invalid tokenGoogle API OAuth2:处理无效令牌
【发布时间】:2013-05-02 02:09:04
【问题描述】:

我在使用 OAuth2 时遇到了一个棘手的情况。

  1. 首先要求用户进行身份验证。他授予访问权限,将凭据存储在存储中(DB、GAE 数据存储等)。

  2. 在您的 Google 个人资料中转到您的授权访问并撤消 应用

  3. 返回应用程序,启动导致 API 调用的操作(已测试 使用 Drive API)

  4. 应用程序正在从商店中检索凭据。测试凭证有效性 (非 null 且无效属性为 False)

  5. 调用 API

  6. 检索 401,未经授权的异常。

如何在有效调用 API 之前检测到凭据无效? 也许这是使用凭据的方式?

感谢您的帮助。

【问题讨论】:

    标签: google-api google-drive-api google-oauth


    【解决方案1】:

    您要存储什么凭据?访问令牌?刷新令牌?

    考虑使用 tokeninfo 端点,https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

    【讨论】:

    • 我正在存储执行 OAuth 步骤 2 时获得的 Credentials 对象。根据文档 (developers.google.com/api-client-library/python/guide/…) 它包含两者。
    • 你可以调用tokeninfo来判断你的access token是否有效,但是如果过期了你可以用你的refresh token取回一个新的,那就没法预测了。
    【解决方案2】:

    在使用 access_token 之前,首先调用 GoogleAPI 中的 [tokeninfo](总是,即使它是一个新的 access_token)。我浪费了几个小时来解决这个问题。 我的 Windows 应用程序工作流程:

    1. oAuth2 -> access_token*(* - 未验证)
    2. 带有 [access_token*] -> “ok”或“invalid”的GoogleAPI.tokeninfo
    3. 如果“ok” - 用于请求的权限

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 2016-08-03
      • 2014-03-17
      • 2016-08-17
      • 1970-01-01
      • 2011-11-27
      • 2017-03-22
      • 2018-02-20
      相关资源
      最近更新 更多