Я пытаюсь настроить группу 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, как указано выше.
Любая помощь будет принята с благодарностью.