【发布时间】:2021-01-01 04:38:13
【问题描述】:
我正在使用 Gmail 的 API 将邮件阅读到收件箱。 我在云开发人员组合中有一个项目。我使用我必须从中获取数据的收件箱的帐户登录。 我已经创建了一个没有任何角色等的服务帐户并下载了所需的密钥。 我使用以下方法构建了一个资源:
scopes = ["https://www.googleapis.com/auth/gmail.readonly"]
credentials = service_account.Credentials.from_service_account_files(path, scopes=scopes)
service = build(
"gmail",
"v1",
credentials=credentials
)
这很好。但是当我尝试从收件箱中提取信息时:
responses = service.users().messages().list(userId="me").execute()
这给了我:
googleapiclient.errors.HttpError: <HttpError 400 when requesting <email> returned "Precondition check failed.">
我尝试将“我”更改为电子邮件,设置一些角色。我可以使用 OAuth 凭据而不是服务密钥来访问它。什么可能导致我的问题?
【问题讨论】:
-
您是否设置了 Gsuite 管理员 service-account#delegatingauthority?除此之外,me 无法正常工作,因为服务帐户没有您需要委派给 gsuite 域用户的 gmail 帐户。
-
尝试按照指南进行操作,但我使用的帐户不符合 GSuite 管理员资格,所以它不会让我授予它权限?
-
通过 gmail 使用服务帐户的唯一方法是使用 gsuite 域电子邮件帐户,它不能使用标准 gmail 帐户。
标签: python-3.x gmail gmail-api google-api-python-client service-accounts