在API控制台的mygmailaccount@gmail.com
下,我创建了一个项目,并且我成功使用了Analytics API
和Search Console API
服务的服务帐户。我现在已启用Gmail V1
API并运行此代码:
gmail_scopes = [
"https://mail.google.com/",
"https://www.googleapis.com/auth/gmail.compose",
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/gmail.send",
"https://www.googleapis.com/auth/gmail.readonly"
]
gmail = Google::Apis::GmailV1::GmailService.new
gmail.authorization = Google::Auth.get_application_default(gmail_scopes)
这是我用来授权Analytics和Search Console API的相同代码(当然具有不同的范围)。
但是,当我运行此代码时出现BAD REQUEST
Failed Precondition
错误:
gmail.get_user_profile("mygmailaccount@gmail.com")
一些谷歌搜索告诉我,这是因为API正在尝试访问serviceaccount电子邮件地址的不存在的收件箱,并且在initiatlization过程中我需要包含mygmailaccount@gmail.com
,以便API服务将使用该收件箱
我该怎么做?
我尝试了以下'...'始终是电子邮件地址
gmail.authorization = Google::Auth.get_application_default(gmail_scopes, username: '...')
gmail.authorization = Google::Auth.get_application_default(gmail_scopes, {username: '...'})
gmail.authorization.username = '...'
答案 0 :(得分:1)
服务帐户无法访问@ gmail.com邮箱。您需要使用OAuth2 UserAuthorizer。有关示例,请参阅Gmail API Ruby Quickstart guide。