我正在编写一个基本应用程序,使用此方法在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 已被撤销。
我认为有一种方法可以告诉客户检查令牌是否有效,如果没有,则将用户弹出到浏览器,但似乎无法获得代码。任何帮助赞赏;)
答案 0 :(得分:2)
由于此代码使用应用程序默认凭据,因此gcloud命令是我获取新令牌的方式:
gcloud beta auth application-default login
虽然如果有一种方法可以在代码中执行此操作,但令牌再次被撤销会很好。
答案 1 :(得分:0)
昨天突然间,我们在Gerrit代码审核中遇到了与OA OAuth2连接类似的问题。所以只是想分享这个,因为它可能与你有关。请参阅此github issue&它的commit made for gerrit-oauth-provider