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)

ファイル「oauth2client/client.py」、834 行目、_do_refresh_request で 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 に答える