Google 计算引擎@firebase/database:FIREBASE 警告

问题描述 投票:0回答:2

我们有一个 Google 计算引擎,用于执行 Nodejs 脚本,其中一个脚本连接到 Firebase 实时数据库。当此脚本尝试连接到 RTD 时,它会失败并显示以下内容:

@firebase/database:FIREBASE 警告:提供身份验证 名为“[DEFAULT]”的应用程序的凭据无效。这通常 表明您的应用程序未正确初始化。确保 提供给initializeApp()的“credential”属性被授权 访问指定的“databaseURL”并且来自正确的项目。

该脚本连接到同一项目下的实例。

databaseURL
通过
FIREBASE_CONFIG
环境变量分配,默认应用程序凭据用于通过各种 GCP 服务进行身份验证。

注释

  • Firestore 和 Firebase Auth 等其他服务可以正常工作:只有实时数据库存在问题。
  • databaseURL
    是正确的,并且在执行时没有问题的 App Engine 实例中使用。
  • 我们尝试将
    databaseURL
    作为
    admin.initializeApp()
    配置的一部分传递,但没有成功。
node.js firebase firebase-realtime-database
2个回答
1
投票

过去几周我遇到了这个问题,只能通过添加一些范围来解决它:

gcloud compute instances set-service-account [INSTANCE_NAME] \
  --service-account "your.gserviceaccount.com" \
  --scopes "https://www.googleapis.com/auth/firebase.database,https://www.googleapis.com/auth/userinfo.email"

这记录在设置实时数据库和身份验证的范围中,尽管我也在那里忽略了它,只有在有人向我指出时才发现它。


0
投票

可能对某些人来说仍然很方便:

确保在 Google 控制台 -> IAM 中将以下两个角色添加到 App Engine 默认服务帐户 (@appspot.gserviceaccount.com):

  1. Firebase 管理员
  2. Firebase 实时数据库管理

此外,在初始化应用程序时也无需显式传递凭据。这会起作用:

const {initializeApp} = require("firebase-admin/app");
if (!admin.apps.length) {
  admin.initializeApp();
}
© www.soinside.com 2019 - 2024. All rights reserved.