似乎无法通过 Gmail API 进行身份验证以阅读电子邮件
Posted
技术标签:
【中文标题】似乎无法通过 Gmail API 进行身份验证以阅读电子邮件【英文标题】:Cant seem to authenticate to read gmail via Gmail API 【发布时间】:2020-07-06 18:34:30 【问题描述】:我已经翻阅了大多数 *** 帖子以找到答案,但仍然无法解决这个问题。这只是在 gmail api 中进行身份验证的简单问题,但我想在服务器中进行,所以我需要遵循服务器服务器(OAuth2.0 2 腿程序)。无论如何 我已经浏览了 google api 中的所有 oauth 文档。 这个是正确的,但它没有好处。 https://developers.google.com/gmail/api/auth/web-server.
我有一个服务帐户,并且我有 creds 文件。
这是我的代码 sn-p。
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"
如果有人能帮我解决这个问题,我将不胜感激。谢谢。
【问题讨论】:
您传递给ListMessagesMatchingQuery
的“如果服务帐户是 Gsuite 帐户并且您已设置域范围的委派,则 gmail api 仅适用于服务帐户。请联系您的 Gsuite 管理员,确保他们已正确设置委派。
delegating authority
【讨论】:
以上是关于似乎无法通过 Gmail API 进行身份验证以阅读电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有手动浏览器身份验证的情况下从 Meteor.js 应用程序对 GMail-api 进行 oauth (2) 身份验证?
我应该使用哪个 Java 库通过 Facebook、Gmail、本地身份验证等进行身份验证?