You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Go从Firebase应用创建的服务账号生成访问令牌

可以通过Go SDK生成Firebase访问令牌

当然可以用Go SDK生成Firebase的访问令牌,你当前的代码问题在于调用了Tokeninfo()接口——这是用来查询已有令牌的信息,而非生成新的访问令牌。

要通过服务账号文件生成访问令牌,你需要使用Google的OAuth2库直接获取凭证令牌,以下是修正后的实现代码:

package main

import (
    "context"
    "fmt"

    "golang.org/x/oauth2/google"
)

func main() {
    ctx := context.Background()

    // 加载服务账号凭证,指定Firebase数据库所需权限范围
    credentials, err := google.FindDefaultCredentials(ctx,
        "https://www.googleapis.com/auth/firebase.database",
        "https://www.googleapis.com/auth/userinfo.email",
    )
    if err != nil {
        panic(err.Error())
    }

    // 获取令牌源,自动处理令牌刷新逻辑
    tokenSource := credentials.TokenSource
    if tokenSource == nil {
        panic("无法获取令牌源")
    }

    // 生成/刷新访问令牌
    token, err := tokenSource.Token()
    if err != nil {
        panic(err.Error())
    }

    // 输出目标访问令牌及过期时间
    fmt.Println("访问令牌:", token.AccessToken)
    fmt.Println("令牌过期时间:", token.Expiry)
}

核心说明:

  • google.FindDefaultCredentials会自动读取环境变量GOOGLE_APPLICATION_CREDENTIALS指向的服务账号文件,也可以通过option.WithCredentialsFile参数手动指定文件路径
  • TokenSource会自动处理令牌的过期刷新,无需手动维护过期逻辑
  • 最终的token.AccessToken就是可用于Firebase REST API的访问令牌

内容的提问来源于stack exchange,提问作者MHY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:24:41