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

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


我认为范围应该允许这样做,并为服务帐户设置域范围的委派。但响应不包括请求的字段,仅填充 Etag 和 ResourceName。https://www.googleapis.com/auth/directory.readonly


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


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)

        }

}


POPMUISE
浏览 112回答 1
1回答

慕虎7371278

事实证明,Google Chat正在返回json响应中的电子邮件地址,只是缺少.我创建了新的结构来捕获其他数据,完全避免了人员API。chat.DeprecatedEventpackage lib// This package creates a customized chat.DeprecatedEvent from v0.37.0 of the google chat apiimport 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 simplicitytype 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-2021type 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"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go