【发布时间】:2021-01-21 17:51:05
【问题描述】:
我有一个聊天机器人,它使用 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 google-people-api hangouts-chat hangouts-api