是否有可能通过内部函数访问firebase管理员?

时间:2017-11-06 10:19:15

标签: firebase google-cloud-functions firebase-admin

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

Firebase admin documentation中,他们说您需要引用包含所有密钥的JSON文件(serviceAccount

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

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

由于我已经进入了自己的Firebase功能,我是否需要上传这些密钥,还是可以通过其他任何方式访问它?

将所有管理密钥上传到Firebase存储只是为了创建新的令牌......

1 个答案:

答案 0 :(得分:5)

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

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);

来自use environment configuration to initialize a module documentation

  

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

     

所以你可以把它放在你的代码中:

const functions = require('firebase-functions');   
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

已经注意到functions.config()仅在云功能托管环境中可用,因此not available when emulating functions locally。作为解决方法,您可以通过在函数目录中运行以下命令将functions.config()导出到.runtimeconfig.json

firebase functions:config:get > .runtimeconfig.json