是否可以通过内部功能访问Firebase管理员?

Gio*_*usa 3 firebase google-cloud-functions firebase-admin

我需要通过Firebase函数访问firebase admin 。我有一个通过HTTP触发器调用的函数,它将创建自定义身份验证令牌。

Firebase管理文档中,他们说您需要引用JSON包含所有键(serviceAccount)的文件

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

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

由于我已经在自己的Firebase函数中,因此我需要上传这些密钥,还是可以任何其他方式访问它?

将我所有的管理密钥上传到Firebase存储只是为了铸造新令牌,这感觉非常不必要。

Gri*_*orr 7

您可以functions.config().firebase用来获取Firebase配置实例,然后将其直接传递给initializeApp()Admin SDK 的方法:

var admin = require("firebase-admin");
var functions = require("firebase-functions");

// Pass the Firebase config directly to initializeApp() to auto-configure
// the Admin Node.js SDK.
admin.initializeApp(functions.config().firebase);
Run Code Online (Sandbox Code Playgroud)

使用环境配置初始化模块文档

当您使用Firebase CLI部署功能时,functions.config().firebase会自动使用初始化firebase-admin SDK所需的配置进行填充。

因此,您可以将其放入代码中:

const functions = require('firebase-functions');   
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
Run Code Online (Sandbox Code Playgroud)

注意,functions.config()仅在Cloud Functions托管环境中可用,因此在本地模拟功能时不可用。解决方法是,可以通过在functions目录中运行以下命令来导出functions.config().runtimeconfig.json

firebase functions:config:get > .runtimeconfig.json
Run Code Online (Sandbox Code Playgroud)