谷歌人员 API 无法获取电子邮件地址

问题描述

我正在编写一个桌面应用程序,需要对谷歌用户进行身份验证并获取他的电子邮件 ID。到目前为止,使用快速入门示例,我能够进行身份验证,但很难获取用户电子邮件地址。

config,err := google.ConfigFromJSON(b,people.UserEmailsReadScope)
if err != nil {
    log.Fatalf("Unable to parse client secret file to config: %v",err)
}
client := getClient(config)

srv,err := people.NewService(ctx,option.WithHTTPClient(client))
if err != nil {
    log.Fatalf("Unable to create people Client %v",err)
}
me,err := srv.People.Get("people/me").PersonFields("emailAddresses").Do()

if err != nil {
    log.Fatalf("Unable to retrieve user. %v",err)
}

我也尝试过 UserinfoEmailScope,但没有成功。每次都得到 403。

googleapi: Error 403: The caller does not have permission to request "people/me". Request requires one of the following scopes: [profile].,forbidden

我也将所有这些范围添加到了项目中。我做错了什么?

解决方法

终于明白了。为此需要两个范围。

config,err := google.ConfigFromJSON(b,people.UserinfoProfileScope,people.UserinfoEmailScope)