2016-10-21 17 views
2

Google APIを初めて使用していて、一般的なコーディングには新しく、確かに質問があります単純ですが、私は答えを見つけることができません。私は次のコードを実行すると -403 Google APIのPythonでドラフトを作成するときに「リクエストに認証スコープが不十分です」

credentials = get_credentials() 
http = credentials.authorize(httplib2.Http()) 
service = discovery.build('gmail', 'v1', http=http) 

results = service.users().labels().list(userId='me').execute() 
labels = results.get('labels', []) 

if not labels: 
    print('No labels found.') 
else: 
    print('Labels:') 
    for label in labels: 
     print(label['name']) 


message_body = "This is the message" 

message = {'message': message_body} 

draft = service.users().drafts().create(userId='me', body=message).execute() 

を私は正常にGmailアカウントにラベルを一覧表示することができていますが、ドラフトを作成するための要求は、エラーメッセージ「要求が不十分な認証要求を持っていた」バックキック。私はドラフトを作成すると、次のスコープのいずれかが必要であることが見つかりました:

が、私の人生のために、私はその手段またはどのように正確に何を把握することはできませんそれを実現させるために、私はこれをどこかで見つけるために最善を尽くしましたが。

答えて

6

クイックスタートに従っている場合は、コードにSCOPESのグローバル変数があり、値はhttps://www.googleapis.com/auth/gmail.readonlyです。これらのスコープは、ユーザにaccess_tokenを与えるためにユーザーがGoogleにリダイレクトされたときに使用されるため、ユーザーのGmailアカウントの内容を読むことができます。

ドラフトなどを送信するには、あなたが言及した範囲の1つが必要です。 https://mail.google.com/SCOPESの値をこの文字列に変更し、the Quickstartで概説されているように、~/.credentials/gmail-python-quickstart.jsonにある資格情報を削除して、単にコンテンツを読むだけでなく、新しい資格情報を取得します。

+0

これは本当に私が求めていた質問に答えるので、ありがとうございます。しかし、 "httplib2.CertificateHostnameMismatch:サーバーがホストgmail.modify.googleapis.comと一致しない証明書を提示しました"というエラーが表示されます。不明瞭な解決策で他の人たちもこのエラーを抱えているようです。あなたは洞察力を持っていますか? –

+1

@JamesLうれしかったよ!この新しいエラーについて何をすべきか分かりません。ごめんなさい。非常に独特です。 – Tholle

+1

最初の問題を修正しようとすると、他のものを変更してしまいました。今、私は "draft.messageで値が無効です"というエラーが発生しました。これはまったく別の問題です。何かを理解できるはずです。あなたのお手伝いをしてくれてありがとうございます。 –

関連する問題