Google api 似乎无法通过gmail API认证阅读gmail

Google api 似乎无法通过gmail API认证阅读gmail,google-api,google-oauth,gmail-api,google-api-python-client,service-accounts,Google Api,Google Oauth,Gmail Api,Google Api Python Client,Service Accounts,我已经在stackoverflow的大部分帖子中找到了答案,但仍然无法解决这个问题。这只是对gmail api进行身份验证的一个简单问题,但我想在服务器上进行身份验证,所以我需要遵循服务器(OAuth2.0 2-legged过程)。无论如何 我已经浏览了google api中的所有oauth文档。 这件衣服很合身,但没用。 我有一个服务帐户,我有信用档案 这是我的代码片段 def call_gmail(): SCOPES = ['https://www.googleapis.com/a

我已经在stackoverflow的大部分帖子中找到了答案,但仍然无法解决这个问题。这只是对gmail api进行身份验证的一个简单问题,但我想在服务器上进行身份验证,所以我需要遵循服务器(OAuth2.0 2-legged过程)。无论如何 我已经浏览了google api中的所有oauth文档。 这件衣服很合身,但没用。

我有一个服务帐户,我有信用档案

这是我的代码片段

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']


如果有人能帮我解决这个问题,我将不胜感激。谢谢。

如果gmail api是Gsuite帐户,并且您已经设置了域范围的委派,那么它只适用于服务帐户。请与您的Gsuite管理员联系,确保他们已正确设置委派


如果gmail api是Gsuite帐户,并且您已经设置了域范围的委派,那么它只适用于服务帐户。请与您的Gsuite管理员联系,确保他们已正确设置委派


您要传递给
ListMessagesMatchingQuery
的参数是什么?您项目的服务帐户只能访问属于您的应用程序的数据,这意味着该服务帐户没有gmail收件箱;只要不请求用户数据,它就可以调用其他API。如果希望使用服务帐户访问用户数据(邮件),则需要域范围的授权。@Aerials-某些电子邮件地址是“发件人”。。它将是“from:”…这是一个个人帐户。如何使用个人帐户使用域范围的委派?如果您想使用Gmail API访问用户的收件箱,需要用户授权。一旦获得同意,服务器将向您的应用程序返回该用户的访问令牌和刷新令牌。如果你不想每次你的应用程序想代表用户访问时都征求用户的同意。然后存储刷新令牌,并重用它们以获得新的访问令牌。您要传递给
ListMessagesMatchingQuery
的参数是什么?您的项目的servcie帐户只能访问属于您的应用程序的数据,这意味着该服务帐户没有gmail收件箱;只要不请求用户数据,它就可以调用其他API。如果希望使用服务帐户访问用户数据(邮件),则需要域范围的授权。@Aerials-某些电子邮件地址是“发件人”。。它将是“from:”…这是一个个人帐户。如何使用个人帐户使用域范围的委派?如果您想使用Gmail API访问用户的收件箱,需要用户授权。一旦获得同意,服务器将向您的应用程序返回该用户的访问令牌和刷新令牌。如果你不想每次你的应用程序想代表用户访问时都征求用户的同意。然后存储刷新令牌,并重用它们以获得新的访问令牌。
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}