Я пытаюсь получить доступ к нашему GSuite GMail API, используя Google API Python Клиент с аутентификацией учетной записи службы. Согласно документам, мой код MCVE выглядит следующим образом:
import os
import sys
from google.auth.transport.requests import Request
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
email = sys.argv[1]
cred = Credentials.from_service_account_file(os.getenv('SERVICE_ACCOUNT'))
cred = cred.with_scopes(['https://www.googleapis.com/auth/gmail.labels'])
cred.refresh(Request())
gmail = build('gmail', 'v1', credentials=cred)
try:
print(gmail.users().labels().list(userId=email).execute())
except Exception as ex:
print('Error:', ex.content.decode('ascii'))
Вывод:
Error: {
"error": {
"errors": [
{
"domain": "global",
"reason": "failedPrecondition",
"message": "Bad Request"
}
],
"code": 400,
"message": "Bad Request"
}
}
Обычные подозреваемые:
- Учетная запись службы предоставляется делегирование всего домена
- Запрашиваемая электронная почта существует
- Области клиента настроены в «Администратор> Безопасность> Дополнительно> Управление доступом клиента API»
![access settings](https://i.stack.imgur.com/slLac.png)
Еще одно наблюдение: когда я получаю доступ к API, счетчик использования увеличивается для учетной записи службы, но остается равным 0 для соответствующего клиента OAuth2.
Что еще я могу отсутствовать?