【问题标题】:Google OAuth2client - invalid_grant: Token has been revokedGoogle OAuth2client - invalid_grant:令牌已被撤销
【发布时间】:2016-09-28 03:57:48
【问题描述】:

我正在编写一个基本应用程序,它使用以下方法在 Google 的云资源管理器中打印出项目: https://cloud.google.com/resource-manager/reference/rest/v1/projects/list

昨天成功了,但我撤销了令牌,代码没有提示重新授权。

from googleapiclient import discovery from oauth2client.client import GoogleCredentials

credentials = GoogleCredentials.get_application_default()

service = discovery.build('cloudresourcemanager', 'v1', credentials=credentials)

projects = service.projects() request = projects.list() while request is not None:

    response = request.execute()

    for project in response['projects']:
        print project
    request = projects.list_next(previous_request=request, previous_response=response)

文件“oauth2client/client.py”,第 834 行,在 _do_refresh_request 中 引发 HttpAccessTokenRefreshError(error_msg, status=resp.status) oauth2client.client.HttpAccessTokenRefreshError: invalid_grant: Token 已被撤销。

我认为有一种方法可以告诉客户端检查令牌是否有效,如果无效则将用户弹出到浏览器,但似乎无法获取代码来执行此操作。任何帮助表示赞赏;)

【问题讨论】:

    标签: python pycharm google-api-client google-oauth oauth2client


    【解决方案1】:

    由于此代码使用应用程序默认凭据,gcloud 命令是我获取新令牌的方式:

    gcloud beta auth application-default login
    

    虽然如果在令牌再次被撤销的情况下有办法在代码中执行此操作会很好。

    【讨论】:

      【解决方案2】:

      昨天我们突然在 gerrit 代码审查中遇到了类似的 Google OAuth2 连接问题。所以只是想分享这个,因为它可能与你有关。请参阅此github issue 及其commit made for gerrit-oauth-provider

      【讨论】:

      • 谢谢,感谢您的回复。我不确定它是否相关。当安全工具 (CloudLock) 从我的 Google 帐户中撤销 OAuth 令牌时,我的工作停止了。客户端库假设令牌仍然有效,但它不是,需要获取一个新的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-21
      • 2021-07-30
      • 2017-06-20
      • 2021-12-27
      相关资源
      最近更新 更多