为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
POPMUISE 2022-08-01 17:27:39
我有一个聊天机器人,它使用谷歌服务帐户连接到谷歌人脉API。机器人收到一个事件,其中包含邮件发件人的 Google ID(即 )。我想使用服务帐户查找邮件发件人的姓名和电子邮件地址。1234567890987654321我认为范围应该允许这样做,并为服务帐户设置域范围的委派。但响应不包括请求的字段,仅填充 Etag 和 ResourceName。https://www.googleapis.com/auth/directory.readonly我可以更改或配置哪些内容以在 People.使用服务帐户获取呼叫中包含任意目录用户的姓名和电子邮件?package mainimport (        "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)        }}
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

事实证明,Google Chat正在返回json响应中的电子邮件地址,只是缺少.我创建了新的结构来捕获其他数据,完全避免了人员API。chat.DeprecatedEvent


package lib


// This package creates a customized chat.DeprecatedEvent from v0.37.0 of the google chat api

import chat "google.golang.org/api/chat/v1"


// ChatEvent Google Chat event with customized User object

// Both ChatEvent.User and ChatEvent.Message.Sender should have the same fields,

// but only ChatEvent.User is modified to use ChatUser for simplicity

type ChatEvent struct {

    // Action: The form action data associated with an interactive card that

    // was clicked. Only populated for CARD_CLICKED events. See the

    // Interactive Cards guide (/hangouts/chat/how-tos/cards-onclick) for

    // more information.

    Action *chat.FormAction `json:"action,omitempty"`


    // ConfigCompleteRedirectUrl: The URL the bot should redirect the user

    // to after they have completed an authorization or configuration flow

    // outside of Google Chat. See the Authorizing access to 3p services

    // guide (/hangouts/chat/how-tos/auth-3p) for more information.

    ConfigCompleteRedirectURL string `json:"configCompleteRedirectUrl,omitempty"`


    // EventTime: The timestamp indicating when the event was dispatched.

    EventTime string `json:"eventTime,omitempty"`


    // Message: The message that triggered the event, if applicable.

    Message *chat.Message `json:"message,omitempty"`


    // Space: The room or DM in which the event occurred.

    Space *chat.Space `json:"space,omitempty"`


    // ThreadKey: The bot-defined key for the thread related to the event.

    // See the thread_key field of the `spaces.message.create` request for

    // more information.

    ThreadKey string `json:"threadKey,omitempty"`


    // Token: A secret value that bots can use to verify if a request is

    // from Google. The token is randomly generated by Google, remains

    // static, and can be obtained from the Google Chat API configuration

    // page in the Cloud Console. Developers can revoke/regenerate it if

    // needed from the same page.

    Token string `json:"token,omitempty"`


    // Type: The type of the event.

    //

    // Possible values:

    //   "UNSPECIFIED" - Default value for the enum. DO NOT USE.

    //   "MESSAGE" - A message was sent in a room or direct message.

    //   "ADDED_TO_SPACE" - The bot was added to a room or DM.

    //   "REMOVED_FROM_SPACE" - The bot was removed from a room or DM.

    //   "CARD_CLICKED" - The bot's interactive card was clicked.

    Type string `json:"type,omitempty"`


    // User: The customized hangouts chat user that triggered the event.

    User *ChatUser `json:"user,omitempty"`

}


// ChatUser A custom hangouts chat user that contains the fields currently sent from google as of 26-Jan-2021

type ChatUser struct {

    // Name: Google's name for the user, such as users/1234567890987654321

    Name string `json:"name"`

    // DisplayName: The first and last name of the user, such as John Doe

    DisplayName string `json:"displayName"`

    // AvatarURL: full URL to an avatar image

    AvatarURL string `json:"avatarUrl"`

    // Email: standard email address

    Email string `json:"email"`

    // Type: see chat.User.Type, typically this will be HUMAN

    Type string `json:"type"`

    // DomainID: see chat.User.DomainId

    DomainID string `json:"domainId"`

}


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号