Как пройти аутентификацию с помощью API Gmail из контейнера узла - PullRequest
0 голосов
/ 07 мая 2020

Я пытался создать соединение с API Gmail. Это сработало, когда я последовал этому примеру: https://developers.google.com/gmail/api/quickstart/nodejs

Проблема в том, что для этого пользователю требуется перейти по URL-адресу, а затем ввести код аутентификации в CLI. Это возможно на моей локальной машине разработчика, но я не понимаю, как это должно быть сделано при развертывании на производственном сервере в контейнере docker. Кроме того, этот метод требует, чтобы вы сохранили файл в папке проекта, содержащий ваши учетные данные (конфиденциальные данные, которые я, очевидно, не хочу иметь в моем Dockerfile).

Моя вторая попытка была с использованием JWT. Я выполнил следующие шаги: Отправлять почту через Google Apps Gmail, используя делегирование домена сервисного аккаунта в nodejs. Это работает до тех пор, пока я действительно не попытаюсь получить письмо из почтового ящика. Я получаю сообщение об ошибке GaxiosError: unauthorized_client: Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.. Я создал учетную запись службы с делегированием домена, поэтому учетная запись должна быть авторизована для любых действий.

Затем я прочитал следующее: «Учетные записи служб работают только с GSuite, потому что вы должны иметь возможность предварительно авторизовать учетную запись службы и предоставить ей доступ к учетной записи пользователя. Невозможно предварительно авторизовать учетную запись Gmail обычного пользователя. Так что вы не можете использовать учетную запись службы с учетной записью Gmail обычного пользователя ». источник: Клиент не авторизован для получения токенов доступа с помощью этого метода Gmail API C#

Я также рассматривал возможность использования только ключа api, но эта опция недоступна для Gmail.

Как, черт возьми, я должен проходить аутентификацию из моего контейнера?

1 Ответ

0 голосов
/ 08 мая 2020

Получается, что учетная запись, которую я использовал, не имела правильных прав. У нас был номер. Теперь все работает как положено! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...