Не могу проверить подлинность для чтения Gmail через Gmail API - PullRequest
1 голос
/ 26 марта 2020

Я просмотрел большинство сообщений stackoverflow, чтобы найти ответ, но все еще не смог решить эту проблему. Это просто вопрос авторизации в API gmail, но я хочу сделать это на сервере, поэтому мне нужно следовать серверу-серверу (процедура OAuth2.0 2 legged). В любом случае, я прошел все документы oauth в Google API. Это на месте, но это не хорошо. https://developers.google.com/gmail/api/auth/web-server.

У меня есть учетная запись службы, и у меня есть файл creds.

вот мой фрагмент кода.

def call_gmail():
    SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
    SERVICE_ACCOUNT_FILE = '<creds_file>'
    credentials = service_account.Credentials.from_service_account_file(
            SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    print(credentials)
    service = build('gmail', 'v1', credentials=credentials)
    messages = ListMessagesMatchingQuery(service, "me", "<Some email address>")
    message_id = messages[0]['id']

Я получаю эту ошибку:

An error occurred: <HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/history?startHistoryId=2547406&alt=json returned "Bad Request">

 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

Буду очень признателен, если кто-то может помочь мне решить это. спасибо.

1 Ответ

0 голосов
/ 26 марта 2020

API gmail работает только с учетными записями служб, если это учетная запись Gsuite, и вы настроили делегирование по всему домену. Обратитесь к администратору Gsuite и убедитесь, что они правильно настроили делегирование.

полномочия делегирования

enter image description here

...