如何验证 Google Firebase 管理员 SDK 凭据是否正确



在使用以下代码初始化应用时,有没有办法验证 Firebase 管理员 SDK 凭据是否正确?

ctx := context.Background()
opt := option.WithCredentialsFile("path/to/firebase-admin-sdk-cred.json")
app, err := firebase.NewApp(ctx, nil, opt)
if err != nil {
return nil, err
}

因为当我尝试故意输入错误的凭据时,我似乎没有收到任何错误。我检查火力基地的实施情况。NewApp((,但似乎它只在没有配置时抛出错误。以下是火力基地的代码。新应用((

func NewApp(ctx context.Context, config *Config, opts ...option.ClientOption) (*App, error) {
o := []option.ClientOption{option.WithScopes(internal.FirebaseScopes...)}
o = append(o, opts...)
if config == nil {
var err error
if config, err = getConfigDefaults(); err != nil {
return nil, err
}
}
pid := getProjectID(ctx, config, o...)
ao := defaultAuthOverrides
if config.AuthOverride != nil {
ao = *config.AuthOverride
}
return &App{
authOverride:     ao,
dbURL:            config.DatabaseURL,
projectID:        pid,
serviceAccountID: config.ServiceAccountID,
storageBucket:    config.StorageBucket,
opts:             o,
}, nil 
}

那么有没有办法在Firebase Admin(app(实例初始化期间检查凭据是否有效,因为似乎捕获错误不是这里的解决方案?

我认为答案在文档中:

某些用例要求您同时创建多个应用程序。 例如,您可能希望从 的实时数据库中读取数据 一个 Firebase 项目并为另一个项目铸造自定义代币。或 你可能希望使用单独的凭据对两个应用进行身份验证。这 Firebase SDK 允许您同时创建多个应用,每个应用都 使用他们自己的配置信息。

我假设检查凭据的唯一方法是调用Auth方法,例如:

client, err := app.Auth(context.Background())

我最终使用google.golang.org/api/transport来强制验证并快速失败

// Check if credential is correct
_, err = transport.Creds(ctx, opt)
if err != nil {
return nil, err
}

最新更新