Google OAuth2client - invalid_grant:令牌已被撤销

时间:2016-09-28 03:57:48

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

我正在编写一个基本应用程序,使用此方法在Google的Cloud Resources Manager中打印项目: 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   已被撤销。

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

2 个答案:

答案 0 :(得分:2)

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

gcloud beta auth application-default login

虽然如果有一种方法可以在代码中执行此操作,但令牌再次被撤销会很好。

答案 1 :(得分:0)

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