0

我正在编写一个基本应用程序,使用此方法在 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)

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

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

4

2 回答 2

2

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

gcloud beta auth application-default login

尽管如果在令牌再次被撤销的情况下有一种方法可以在代码中执行此操作,那就太好了。

于 2016-09-29T05:14:20.367 回答
0

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

于 2016-09-29T04:51:44.887 回答