【发布时间】:2021-07-09 14:41:03
【问题描述】:
我有两个 firebase 项目,一个用于生产,一个用于开发。我已经为这两个项目创建了服务帐户密钥,并在我的函数文件夹中初始化了 admin,如下所示:
const admin = require("firebase-admin");
const serviceAccount = require("./service-account.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "some-app.appspot.com",
});
const db = admin.firestore();
module.exports = {
db,
admin,
};
但我需要 firebase 为每个项目使用适当的服务帐户。我的应用设置为在生产中部署时使用生产项目,但我设置 admin.js(上图)的方式总是需要开发服务帐户凭据。
如何将服务帐户凭据设置为环境变量?有没有办法在控制台中将密钥添加到 firebase 配置?还是我应该在生产服务帐户中硬编码并接受它?
我在docs 中找到了这个,但它似乎不能解决我的问题。
serviceAccount = require('./serviceAccount.json');
const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);
感谢您提供的任何帮助。
【问题讨论】:
-
我不清楚您所说的“我需要 firebase 为每个项目使用适当的服务帐户”是什么意思。服务帐户旨在供您在自己的后端代码中使用,以访问某些 Firebase 和 Google Cloud 产品。您无需在控制台中配置它们,您只需在控制台中生成它们并在您的代码中使用它们。我建议编辑您的问题,以便更清楚您想要实现的具体目标或未按您预期的方式工作。
-
谢谢,道格。已编辑。这一点: const serviceAccount = require("./service-account.json");是我的开发服务帐户。从生产中调用函数时,我需要拉入 prod 服务帐户。有没有办法让它成为环境变量?希望这是有道理的。
-
我不建议你遵循我的技术。但是你可以尝试这样的事情我试过in this project
标签: node.js firebase google-cloud-functions