我正在尝试使用服务帐户和JWT从Google API获取消息信息。
我已经启用了域范围的委派。我可能应该提到,我不是GSuite管理员,只是一个试图使用Go脚本从我自己的收件箱中获取消息的用户。
func main() {
data, err := ioutil.ReadFile("JWT_Credentials.json")
conf, err := google.JWTConfigFromJSON(data, gmail.GmailReadonlyScope)
client := conf.Client(oauth2.NoContext)
// Create a new gmail service using the client
gmailService, err := gmail.New(client)
fullMessage, err := gmailService.Users.Messages.Get("me", message.Id).Format("metadata").Do()
if err != nil {
log.Printf("Error: %v", err)
}
}
和我的JWT凭据如下:
{
"type": "service_account",
"project_id": "PROJECT_ID",
"private_key_id": "PRIVATE_KEY_ID",
"private_key": "-----BEGIN PRIVATE KEY-----\PRIVATE_KEY",
"client_email": "SERVICE@PROJECT_ID.iam.gserviceaccount.com",
"client_id": "CLIENT_ID",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url":
"https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "CERT_URL"
}
代码运行时出现以下错误:
googleapi: Error 400: Bad Request, failedPrecondition
如果有人可以解决这个问题,或者曾经遇到过,请帮帮我!