2017-02-14 10 views
1

このチュートリアルの次の記事はUsing OAuth 2.0 for Server to Server Applicationsです。サービスアカウントを使用してGmail APIに接続しようとしています。Gmail APIサーバーからサーバーアプリケーションへ(不正リクエストエラー)

私はこのようなルックスで終わるコード:

from oauth2client.service_account import ServiceAccountCredentials 
from httplib2 import Http 
from apiclient.discovery import build 
import json 

scopes = ['https://www.googleapis.com/auth/gmail.readonly'] 

credentials = ServiceAccountCredentials.from_json_keyfile_name('******.json', scopes) 

http_auth = credentials.authorize(Http()) 
service = build('gmail', 'v1', http=http_auth) 
request = service.users().messages().list(userId='me') 
response = request.execute() 

print json.dumps(response, sort_keys=True, indent=2) 

私はこのコードを実行するときしかし、私は次のエラーを取得する:

googleapiclient.errors.HttpError:https://www.googleapis.com/gmail/v1/users/me/messages?alt=json returned "Bad Request">

誰かがどこにこのエラー私が理解するのに役立ちますにから来ていますか?

答えて

0

サービスアカウントをダミーユーザーとみなします。 GoogleドライブアカウントにはGoogleカレンダーアカウントがあります。それが私の知る限りではGmailアカウントを持っていません。

通常、サービスアカウントを使用してデータを要求する場合は、サービスアカウントにそのデータへのアクセス権を手動で与える必要があります。 googleドライブの場合は、Googleドライブにアクセスできるようにサービスアカウントでフォルダを共有できます。 (ドライブアカウントにアップロードすることもできますが、この質問の対象外です)

Gmailアカウントに別のユーザーのアクセスを許可する方法はないため、通常のユーザーのGmailでサービスアカウントを使用する方法はありませんアカウント。

注:これは通常のユーザーGmailアカウントではなく、実際にはGoogleドメインに基づいているアカウントであれば、ドメイン上の他のユーザーのすべてのメールへのアクセスを管理セクションから許可することができます。

その他の点では、Oauth2を使用してGmailにアクセスする必要があります。

関連する問題