Разрешение доступа к 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)