Авторизация учетной записи службы Google с помощью JWT для Gmail API - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь получить доступ к своей электронной почте через Gmail API (через AWS lambda), используя учетные данные учетной записи службы. У меня нет учетной записи GSuite, поэтому я не могу делегировать полномочия по всему домену и выдавать себя за мою учетную запись user@gmail.com.

Я прибег к авторизации учетной записи службы без OAuth, используя подписанный JWT напрямую в качестве токена на предъявителя. [см.]: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth

Я также включил в приложение весь доступ к Gmail и назначил служебную учетную запись ролью владельца в консоли.

Я использую google.auth.jwt модуль, но изо всех сил пытаюсь понять документацию полностью: [см. Документы]: https://google -auth.readthedocs.io / en / latest / reference /google.auth.jwt.html#module-google.auth.jwt

Вот что я попробовал:

from googleapiclient.discovery import build
from httplib2 import Http
from google.auth import crypt
from google.auth import jwt

audience = 'https://mail.google.com/' ## full access scope
credentials = jwt.Credentials.from_service_account_file(
    'credentials.json', audience=audience) # json credentials from api console - for service account
service = build('gmail', 'v1', credentials=credentials)

Это дает мне ошибку 401:

googleapiclient.errors.HttpError: <HttpError 401 when requesting https://www.googleapis.com/gmail/v1/users/me/messages?alt=json returned "Invalid Credentials">

credentials возврат объекта выглядит как допустимый со всеми необходимыми элементами, однако я не знаю, как заставить его «подражать» моей личной электронной почте.

...