Разрешение доступа к API-интерфейсу Google Admin SDK в Python - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь настроить группу Google в маркетинговых целях, в которой, когда определенные пользователи регистрируются в моем приложении, я отправляю свое письмо в эту группу Google со следующим кодом

# google_admin_apis.py
def add_member(member):
    if not member.email:
        return False
    try:
        service = build('admin', 'directory_v1')
    except DefaultCredentialsError: # For developers
        return False
    group_key = 'mygroup@mydomain.com'
    body = {
        "email": member.email
    }
    members = service.members()
    request = members.insert(groupKey=group_key, body=body)
    response = request.execute()
    return True

Мое приложение размещено в Google App Engine, поэтому по умолчанию ADC будет использовать служебную учетную запись по умолчанию при запуске на сервере. Я попытался запустить этот код локально, используя gcloud auth application-default-account, вход в систему и вход в систему с моей учетной записью администратора G Suite, а также с моей личной учетной записью (оба являются владельцами проекта GCP). После того, как это не удалось, я провел небольшое исследование и понял, что для того, чтобы OAuth2 мог получить доступ к моим данным пользователя G Suite (я не получаю доступ к чему-либо, вставляя пользователя?!?), Мне пришлось «включить делегирование в рамках всего домена» в службе по умолчанию. Для этого я загрузил служебную учетную запись JSON и попытался вручную авторизоваться с помощью $ GOOGLE_APPLICATION_CREDENTIALS, но все равно получил 403. Затем я пошел еще дальше и следовал этим инструкциям . Предоставление моему идентификатору клиента доступа к https://www.googleapis.com/auth/admin.directory.group и group.member.

После всего этого я все еще получаю ошибку 403.

С учетными данными приложения по умолчанию я получаю:

<HttpError 403 when requesting
https://www.googleapis.com/admin/directory/v1/groups/groupKey/members?alt=json 
returned "Insufficient Permission">

При использовании учетной записи службы по умолчанию ядра приложения через .json с учетной записью activ-service или через GOOGLE_APPLICATION_CREDENTIALS я получаю:

<HttpError 403 when requesting
https://www.googleapis.com/admin/directory/v1/groups/groupKey/members?alt=json 
returned "Not Authorized to access this resource/api">

(groupKey намеренно подвергнут цензуре)

Короче говоря, у меня есть учетная запись службы по умолчанию для механизма приложений с делегированием по всему домену, и я предоставил своему идентификатору клиента доступ к обеим ролям, необходимым для функции member.insert () API-интерфейса каталога, однако мне по-прежнему не разрешается вызывать API, как указано выше.

Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...