2017-04-21 21 views
0

Google Analyticsにサーバー間リクエストを行いたいと思います。私はPython、webapp2、App Engineを使用しています。私はApp Engineのを使用しているので、私はすでにサービスアカウントを持っていると私はそのAPIキーをダウンロード:私はthis tutorialしかしget_access_token()がエラーをスローし、次のよMy JSON APIが正しい形式ではありません

{ 
    "type": "secret", 
    "project_id": "secret", 
    "private_key_id": "secret", 
    "private_key": "secret", 
    "client_email": "secret", 
    "client_id": "secret", 
    "auth_uri": "secret", 
    "token_uri": "secret", 
    "auth_provider_x509_cert_url": "secret", 
    "client_x509_cert_url": "secret" 
} 

。ライブラリをデバッグしているとき、私はコードがjsonフィールドを期待していることを発見しました

json_data['_service_account_email'], 
scopes=json_data['_scopes'], 
private_key_id=json_data['_private_key_id'], 
client_id=json_data['client_id'], 
user_agent=json_data['_user_agent'], 

私は間違っていますか?私はgoogle_api_python_clientに付属のoauth2clientを使用しています。

答えて

1

ServiceAccountCredentials.from_json()を使用してキーファイルを読み込んでいるようです。

このコンストラクタは、シリアル化されたServiceAccountCredentialsインスタンスで使用するためのものであり、クラウドコンソールからダウンロードしたキーファイル用ではありません。

ServiceAccountCredentials.from_json_keyfile_name()を代わりに使用してください。

+0

キーファイルの内容がファイルではなくデータベースに保存されている場合はどうすればよいですか? –

+0

鍵をPKCS#12形式で保存する場合、 'ServiceAccountCredentials._from_p12_keyfile_contents()'を使用できるはずです。この場合、サービスアカウントの電子メールアドレスを引数として指定する必要があります。 – dorian

+0

それでもファイルを使用する必要があります。私は完全にファイルを使用しないようにしたい。 –

関連する問題