Разрешение доступа к API-интерфейсу Google Admin SDK в Python

Я пытаюсь настроить группу 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.

С помощью application-default-credentials я получаю:

<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-интерфейс, как указано выше.,

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

0 ответов

Я последовал этому руководству https://developers.google.com/admin-sdk/directory/v1/quickstart/python, чтобы запустить аналогичную функцию локально, используя Google google_auth_oauthlib для настройки учетных данных OAuth2.

service = build('admin', 'directory_v1', credentials=creds)
Другие вопросы по тегам