2

Google Apps ドメインのユーザーの署名を編集したいと考えています。サービス アカウントを使用する予定です。サービス アカウントはドメイン全体に委任されます。これを gmail API と連携させて電子メールを送受信していますが、署名は別の API を使用して変更されています。https://developers.google.com/admin-sdk/email-settings/によると、この API は Google Developer Console で有効にした Admin SDK です。

ライブラリ gdata.apps.emailsettings.client を使用しようとしています (これは Python 3.x をサポートしていません)

資格情報の作成は機能しますが、実行しようとすると

gmail_client.RetrieveSignature(username)

gdata.client.Unauthorized: Unauthorized - Server Responded: 401 が表示されます。

# python 2.7 from macports    
def setup_gmail_client_new_api():
        client_email = '...3@developer.gserviceaccount.com'

        key_path = 'VCI-EMAIL-INTEGRATION-f493528321ba.json'
        sender = 'tim@vci.com.au'
        API_scope = 'https://apps-apis.google.com/a/feeds/emailsettings/2.0/'
                                            filename=key_path, scopes=API_scope)
        credentials = ServiceAccountCredentials.from_json_keyfile_name(key_path, scopes=API_scope)
        return credentials


    if __name__ == "__main__":
        credentials = setup_gmail_client_new_api()
        client = gdata.apps.emailsettings.client.EmailSettingsClient(domain='vci.com.au')

        auth = gdata.gauth.OAuth2Token(
            credentials.client_id,#serviceEmail
            credentials.client_secret,#private key
            scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/',
            access_token=credentials.access_token,
            refresh_token=credentials.refresh_token,
            user_agent=credentials.user_agent)

        auth.authorize(client)
        result = retrieve_sig(client,"tim")
        print (result)

署名を取得する試み:

gdata.client.Unauthorized: Unauthorized - Server responded with: 401,

サービス アカウントにはドメイン全体の委任があります。Google Apps ドメイン セキュリティ コントロール パネル (API クライアント アクセスの管理) で、サービス ID には「メール設定 (読み取り/書き込み) https://apps-apis.google.com/a/feeds/emailsettings/2.0/」の権限があります。

4

2 に答える 2

3

メール設定 API では、スーパー管理者として認証する必要があります。通常のユーザーは API にアクセスできません。したがって、サービス アカウントはスーパー管理者として機能し、スーパー管理者は API 呼び出しで指定されたユーザーの変更を行う必要があります。

于 2016-04-14T10:25:01.063 に答える