如何在firebase云函数上使用describeSecret

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

我正在将Firebase上的云功能从第一代升级到第二代我使用defineSecret来获取我在Google云上创建的秘密,我需要部署这些功能,但该过程没有完成并给我这个错误:

错误:功能部署期间无法访问秘密“private_key”的值。秘密值仅在运行时可用。

这是我的函数的代码:

import * as admin from "firebase-admin";
import {defineSecret, defineString} from "firebase-functions/params";
const clientEmail = defineString("client-email");
const privateKey= defineSecret("private_key");
const projectId = defineString("project_key");
admin.initializeApp({
    credential: admin.credential.cert({
        privateKey: privateKey.value().replace(/\\n/g, "\n"),
        projectId: projectId.value(),
        clientEmail: clientEmail.value(),
    }),
    databaseURL: "myUrl",
});

const db = admin.firestore();
const realtime = admin.database();
export {admin, db, realtime};

错误的内容很明显,但我不知道我的代码出了什么问题;预先感谢

javascript firebase google-cloud-functions
1个回答
0
投票

您的代码结构方式,您在全局范围内调用

admin.initializeApp
。 这意味着代码将在部署期间运行,因为部署过程运行会评估全局范围内的所有代码,包括
privateKey.value()
)。

最简单的方法是将密钥上对

value()
的所有调用移至 Cloud Function 调用内部(不在全局范围内)。 Cloud Function 实现“不会”在部署时执行(仅在编译时执行)。 这将删除错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.