使用functions.config().firebase 进行初始化时,如何包含我的firebase 服务帐户密钥?

twe*_*ypi 5 javascript firebase google-cloud-functions firebase-admin

我正在初始化我的 firebase 函数,如下所示:

admin.initializeApp(functions.config().firebase)
Run Code Online (Sandbox Code Playgroud)

我已经生成了一个服务帐户密钥,我相信我需要出于身份验证目的来执行此操作。

它给了我一个带有各种键/值的 json 表。

说明是将其添加到 admin.initializeApp 中,如下所示:

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
Run Code Online (Sandbox Code Playgroud)

这与我的做法非常不同。

我什至不确定我是否需要这样做,因为我确实可以使用以前的方法访问 firestore,但是使用有效用户 id 令牌进行身份验证不起作用,在 firebase 中出现以下错误:

错误:错误:解码 Firebase ID 令牌失败。确保您传递了代表 ID 令牌的整个字符串 JWT。有关如何检索 ID 令牌的详细信息,请参阅 https://firebase.google.com/docs/auth/admin/verify-id-tokens 。

通过嗅探,似乎缺少的是 admin sdk 服务帐户。

Fra*_*len 4

此代码片段是初始化适用于 Node.js 的 Firebase Admin SDK 的通用方法:

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
Run Code Online (Sandbox Code Playgroud)

如您所见,它要求您从控制台下载 JSON 文件,并将其添加到路径中。

这有点挑剔,一些开发人员发现很难开始工作。由于 Cloud Functions 环境完全在 Firebase 的控制之下,因此它变得更容易一些。您的其他片段显示了如何:

admin.initializeApp()
Run Code Online (Sandbox Code Playgroud)

两个代码片段完成相同的任务,但后者仅适用于 Firebase 的 Cloud Functions。