0

我正在寫打印出使用這種方法在谷歌的雲資源管理器中的項目基本應用: https://cloud.google.com/resource-manager/reference/rest/v1/projects/list谷歌OAuth2client - invalid_grant:令牌已被吊銷

昨天它的工作,但我撤銷令牌和代碼沒有按不提示重新授權。

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) 

File "oauth2client/client.py", line 834, in _do_refresh_request raise HttpAccessTokenRefreshError(error_msg, status=resp.status) oauth2client.client.HttpAccessTokenRefreshError: invalid_grant: Token has been revoked.

我認爲有一種方式來告訴客戶端檢查令牌是有效的,並彈出用戶從一個瀏覽器,如果沒有,但似乎無法讓代碼做到這一點。任何幫助讚賞;)

回答

0

突然昨天我們遇到了類似的問題在谷歌OAuth2連接從gerrit代碼審查。所以只是想分享一下,因爲它可能與你有關。請參閱本github issue &其commit made for gerrit-oauth-provider

+0

謝謝,我很欣賞這種迴應。我不確定它是相關的。當安全工具(CloudLock)從我的Google帳戶中撤消OAuth令牌時,Mine停止工作。客戶端庫假定令牌仍然有效,但它不是,並且需要獲取新令牌。 – Michael

1

由於此代碼使用應用程序的默認憑據時,gcloud指令是我得到一個新的令牌:

gcloud beta auth application-default login 

雖然這將是很好,如果有一種方式,要做到這一點在令牌被再次吊銷的情況下的代碼。