Проблема с ошибкой 401 Unauthorized
связана с несколькими источниками. Вот краткое изложение наиболее распространенных причин.
Первый шаг:
Прежде чем продолжить, дважды проверьте, что у вас есть Gmail API [1] включено в консоли разработчика [2] для проекта, который вы используете - возможно, что либо он был включен для другого проекта, либо даже случайно отключен при обходе настроек.
После того, как на консоли разработчика выберите свой проект в раскрывающемся списке в левом верхнем углу страницы рядом с Google APIs
, прежде чем проверять, включен ли API.
Отладка 401 Unauthorized
:
Указанная c ошибка TokenResponseException: 401 Unauthorized
также может исходить от маркера с истекшим сроком доступа. Хотя это не должно поддерживаться для учетных записей служб так же, как и для доступа учетных записей пользователей к API, оно генерируется на лету и зависит от используемого вами файла учетных данных.
Важные вещи, которые следует помнить для учетных данных, - это то, что адрес электронной почты вашей учетной записи и области действия должны быть хорошо и полностью определены; то есть используемые вами области предоставляют вашему приложению доступ к службам, к которым оно пытается получить доступ . В случае метода Gmail Users.messages: send
[3] вам понадобится одна из следующих областей:
Примечание: также важно убедиться, что у вас есть области, доступные для других методов приложения, которые вы будете использовать sh. Для получения этой информации ознакомьтесь со спецификацией метода c страниц.
Также проверьте страницу управления API Google, в которой подробно описано, как пройти аутентификацию с помощью служебной учетной записи, в Java [4] для получения дополнительной информации.
Учетные записи служб и делегирование по всему домену:
В соответствии с документацией Google важно предоставить служебную учетную запись, которую вы используете для доступа к вашим данным пользователя. передача полномочий по всему домену [5] . Шаги приведены в ссылке # 5, но приведено следующее:
Чтобы включить делегирование G Suite для всего домена, выполните следующие действия:
- Найдите вновь созданная служебная учетная запись в таблице. В разделе Действия нажмите ⋮ , затем Редактировать .
- В сведениях учетной записи службы нажмите ˅ Показать делегирование для всего домена , а затем убедитесь, что установлен флажок Включить G Suite для всего домена .
- Если вы еще не настроили экран согласия OAuth в своем приложении, необходимо сделать это до того, как вы сможете включить домен Всесоюзная делегация. Следуйте инструкциям на экране для настройки экрана согласия OAuth, затем повторите описанные выше шаги и повторно установите флажок.
- Нажмите Сохранить , чтобы обновить учетную запись службы и вернуться к таблице. служебных аккаунтов. Можно увидеть новый столбец Делегирование всего домена . Нажмите Просмотр идентификатора клиента , чтобы получить и записать идентификатор клиента.
Получение дополнительной информации из 401
:
Также возможно получить более подробную информацию о специфике вашего 401
, извлекая данные из HTTP-ответа:
try {
App.sendMessage (service, "gsuitegroupemail@DOMAIN.COM", mimeMessage);
} catch (GoogleJsonResponseException e) {
// log your errors and error messages
}
Надеюсь, это полезно для вас!
Ссылки :
- API Gmail v4
- Консоль разработчика Google
- API Gmail -
Users.messages: send
Метод - Аутентификация с использованием учетной записи службы
- Выполнение делегирования полномочий G Suite для всего домена