2016-09-06 4 views
0

私はpyhtonで私たちの支持者を助けるための小さなスクリプトを書いています。私は新しいユーザーのためにいくつかのラベルを作成したいと思いますが、私は認証に失敗しています。ここでGMail APIでサービス利用者のラベルを管理する

は、コードのいくつかの重要な部品です:

delegated_credentials = self.credentials.create_delegated(self.p.mail) 
    http = delegated_credentials.authorize(httplib2.Http()) 
    self.service_gmail = discovery.build('gmail', 'v1', http=http) 

    for i in groupstoadd: 
     print "| |-> {}".format(i) 
     self.service_gmail.users().labels().create(userId=self.p.mail, body={"name": i}).execute() 

のでself.credentials管理者アカウントで、コード内で同じように働いているので、私は前にこのユーザーを作成することができます。しかし、私は...ラベルを(コールしようとすると)私はこの取得作成します。

Error: (<class 'oauth2client.client.HttpAccessTokenRefreshError'>, HttpAccessTokenRefreshError(u'unauthorized_client: Unauthorized client or scope in request.',), <traceback object at 0x7f205667a9e0>) 

面白いことに、私は、デリゲートに私の管理者の電子メールを使用して作成した場合、それが動作すること。新しいユーザーにGMAIL APIを何らかの形で有効にしなければならないのではないかと思います。 (確かに、ドメイン全体で有効なAPI)

そしてself.credentialsパーツ:

self.credentials = ServiceAccountCredentials.from_json_keyfile_name(CreateGA.CLIENT_SECRET_FILE, scopes=CreateGA.SCOPES) 

とスコープは、以下のとおりです。

SCOPES = [ 
       'https://www.googleapis.com/auth/admin.directory.user', 
       'https://www.googleapis.com/auth/admin.directory.group', 
       'https://www.googleapis.com/auth/admin.directory.user.security', 
       'https://www.googleapis.com/auth/gmail.labels', 
    ] 

事前にどうもありがとう! P.

答えて

0

「admin。*」スコープはGmail APIでは動作しません。このAPIを使用してラベルを更新するには、gmail.labelsスコープのみが必要です。

ドメイン全体の委任でGmail APIを使用するには、these docs on setting up Domain-wide delegationに従う必要があります。具体的には、ドメインCPanelで開発者プロジェクトをホワイトリストに登録してから、「JWT」認証フローを作成して、各ユーザーの認証トークンを作成します。その後、その資格情報を使用して、APIに対してGmailユーザーのリクエストを行います。

+0

新しいユーザーを作成するための管理スコープがあります。サービスユーザーが管理ユーザーを引き継いでユーザーを作成できるので、DWDが機能すると思います。私はCPanler JWTの事をチェックしなければなりません。ヒントがありがとう、私はそれが動作するように管理すれば戻ってきた! :) –

+0

ユーザーが作成された後にラベルをつぶす前に60秒待っていれば、問題は違った –

+0

(ごめんなさい)私のコードは動作します.... wuuu huuu :)タイミングの問題のように見えますエンティティとしてのユーザーは私が彼をグループに割り当てることができるように作成されています。受信ボックスの作成にはもう少し時間がかかります...少なくとも、それは今働いているので、助けてくれてありがとう! –

0

問題はタイミングにありました.Gmail受信トレイは、ユーザーの作成後に作成するのに時間がかかるようです。私は60秒で試しましたが、もちろんリトライループが速くなりました。とにかく、私は今進むことができます:) すべての答えをありがとう。

関連する問題