如何使用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
相关产品推荐
相关产品推荐

