如何使用Go从FireBase应用程序创建的服务帐户生成访问令牌

6za6bjd0  于 2022-09-21  发布在  Go
关注(0)|答案(1)|浏览(220)

有一种方法可以使用从Firebase应用程序生成的服务帐户文件来生成访问令牌。消息来源:https://firebase.google.com/docs/database/rest/auth#python.

有没有办法从Go SDK生成访问令牌?

[更新]我已经研究了他们的文档,并达到了这个级别,对于如何从这一点获取/获取Access_Token有点迷茫。

package main

import (
    "context"
    "fmt"
    "math"
    "regexp"
    "sort"
    "strconv"
    "strings"

    "google.golang.org/api/oauth2/v2"
    "google.golang.org/api/option"
)
func main() {
    ctx := context.Background()
    oauth2Service, err := oauth2.NewService(ctx, option.WithCredentialsFile("service-account.json"), option.WithScopes("https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/firebase.database"))

    if err != nil {
        panic(err.Error())
    }
    tokenInfo, err := oauth2Service.Tokeninfo().Do()

    if err != nil {
        panic(err.Error())
    }

    fmt.Println(tokenInfo)
}
q9yhzks0

q9yhzks01#

在深入研究他们的文档后才得到解决方案:Doc to transport package

ctx := context.Background()
    creds, err := transport.Creds(ctx, option.WithCredentialsFile("service-account.json"), option.WithScopes("https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/firebase.database"))

    if err != nil {
        panic(err.Error())
    }

    ts := creds.TokenSource

    tok, err := ts.Token()

    if err != nil {
        panic(err.Error())
    }

    fmt.Printf("access_token %v", tok.AccessToken)

相关问题