Gmail API «Ошибка 403: запрос имел недостаточные области аутентификации» с языком Go

#go #gmail-api

#Вперед #gmail-api

Вопрос:

Следуя приведенным здесь инструкциям Go Quickstart, включил API Gmail, загрузил конфигурацию клиента и затем выполнил quickstart.go. В следующей строке показано, что запрашивается GmailSendScope.

 config, err := google.ConfigFromJSON(b, gmail.GmailSendScope)
  

Следуйте остальным инструкциям. При сохранении token.json программа отобразила следующее сообщение:

 Saving credential file to: token.json
2020/10/07 12:36:13 Unable to retrieve labels: googleapi: Error 403: Request had 
insufficient authentication scopes.
More details:
Reason: insufficientPermissions, Message: Insufficient Permission
  

На консоли разработчика я вижу клиент Oauth типа Desktop для проекта Quickstart, и на экране безопасности было показано, что я разрешаю приложению отправлять электронные письма с использованием моей учетной записи gmail.

Я не уверен, как исправить эту проблему.

macOS Catalina 10.15.7, go1.15.2 darwin / amd64

Спасибо за помощь!!!

Комментарии:

1. Могу ли я спросить вас о разнице между вашим текущим сценарием и сценарием quickstart ?

2. Единственное отличие — это строка, которую я перечислил выше. Оригинальный скрипт имеет gmail.GmailReadonlyScope. Программа работала с этой областью. Но мне нужно отправлять электронные письма, поэтому я изменил область на gmail.GmailSendScope и токен. файл json не может быть сохранен. Я удалил токен. файл json для ReadonlyScope перед запуском скрипта для GmailSendScope, как предложено в скрипте.

3. Спасибо за ответ. В вашем случае, когда gmail.MailGoogleComScope используется вместо gmail.GmailSendScope , какой результат вы получите? В данном случае gmail.MailGoogleComScope это https://mail.google.com/ . Кстати, при изменении областей, пожалуйста, удалите token.json и повторно авторизуйте области снова. Пожалуйста, будьте осторожны с этим.

4. Да, это сделало это. Большое вам спасибо, я потратил на это много часов. Следующий шаг — фактически отправить электронное письмо. Еще раз спасибо!!!

Ответ №1:

Спасибо Tanaike. Использование gmail.MailGoogleComScope решило проблему!