微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过服务帐户获取任何 google 目录用户的姓名和电子邮件

如何解决通过服务帐户获取任何 google 目录用户的姓名和电子邮件

我有一个使用 Google 服务帐户连接到 Google People API 的聊天机器人。机器人接收一个事件,其中包含消息发件人的 Google ID(即 1234567890987654321)。我想使用服务帐户查找邮件发件人的姓名和电子邮件地址。

我相信 https://www.googleapis.com/auth/directory.readonly scope should allow this,为服务帐户设置了域范围的委派。但是响应不包括请求的字段,只填充了 Etag 和 ResourceName。

我可以更改或配置哪些内容以在使用服务帐户的 People.Get 调用中包含任意目录用户的姓名和电子邮件

package main

import (
        "context"
        "log"

        "google.golang.org/apI/Option"
        "google.golang.org/api/people/v1"
)

func main() {
        // Service account's credentials
        apiKeyFile := "credentials.json"
        // Google ID of a person within your directory
        resourceName := "people/1234567890987654321"
        fields := "names,emailAddresses"

        ctx := context.Background()
        // directory.readonly scope is included by default
        s,_ := people.NewService(ctx,option.WithCredentialsFile(apiKeyFile))
        pCall := s.People.Get(resourceName)
        pCall.PersonFields(fields)
        person,_ := pCall.Do()
        log.Print(person.Etag)
        for _,address := range person.EmailAddresses {
                log.Print(address.Value)
        }
        for _,name := range person.Names {
                log.Print(name.displayName)
        }
}

Go Playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。