提问人:Harmandeep Dubb 提问时间:11/14/2023 更新时间:11/15/2023 访问量:34
错误 4000 前提条件检查失败 - Google Gmail API 服务帐户
Error 4000 Precondition Check Failed - Google Gmail Api Service Account
问:
当我尝试使用服务帐户实现与 gmail api 的连接并收到错误时,我遇到了一个问题:
Error 400: Precondition check failed., failedPrecondition
以下是正在执行的代码:
func connectToGmail() error {
err := godotenv.Load()
if err != nil {
return err
}
gmailService, err := gmail.NewService(context.Background(), option.WithScopes(gmail.GmailReadonlyScope))
if err != nil {
return err
}
resp, err := gmailService.Users.Messages.List("me").Do()
if err != nil {
return err
}
fmt.Println(resp)
return nil
}
从我的研究中,没有什么能让我相信我的代码有什么问题,所有的研究和错误代码都让我相信我的设置是错误的。
我已经完成了两次服务帐户的设置过程(我将在下面描述),但没有任何成功,如以下链接所示:
https://developers.google.com/workspace/guides/create-credentials#google-cloud-console
已创建服务帐户
已将组管理员角色分配给帐户
为帐户创建密钥
下载了制作的 Json 并将其重命名为 credentials.json 并将其放入我的编码目录中
将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为凭据文件的绝对路径。
设置域范围的委派。复制客户端 ID 并转到 APi 控件,并添加客户端 ID 以及以下范围:https://www.googleapis.com/auth/gmail.readonly、https://www.googleapis.com/auth/gmail.modify https://mail.google.com/
已运行代码。
选择这些范围的原因是因为我只想自动阅读我帐户中的电子邮件,添加了修改和 mail.google 的电子邮件,因为我认为只读是限制性的,是我错误的原因。我的应用程序的目的是能够在事件发生后阅读收件箱中的电子邮件,并验证电子邮件是否已收到。
如果需要更多信息,请告诉我。
非常感谢任何指导。
答:
预构建失败正常意味着您使用的是 Gmail 服务帐号,而未配置网域范围的 delig
检查代码模拟的 deligation 和 user
config, err := google.JWTConfigFromJSON(serviceAccountJSON,
"https://mail.google.com/", "https://www.googleapis.com/auth/cloud-platform",
)
config.Subject = "[email protected]"
评论