Node.js 是否可以使用';firebase管理员';包裹
我有基于服务帐户访问的节点应用程序,所以我使用了Node.js 是否可以使用';firebase管理员';包裹,node.js,firebase,firebase-admin,Node.js,Firebase,Firebase Admin,我有基于服务帐户访问的节点应用程序,所以我使用了firebase admin。正如我以前看到的,firebase admin大部分都是重复的firebase包(除了身份验证部分、签名和其他一些部分),但现在我想调用函数,我找不到任何与firebase.apps[0].functions()等价的函数。httpscalable('myFunction')。我研究了打字脚本,他们甚至没有提到函数 admin.initializeApp({ credential: admin.credential
firebase admin
。正如我以前看到的,firebase admin
大部分都是重复的firebase
包(除了身份验证部分、签名和其他一些部分),但现在我想调用函数,我找不到任何与firebase.apps[0].functions()等价的函数。httpscalable('myFunction')
。我研究了打字脚本,他们甚至没有提到函数
admin.initializeApp({
credential: admin.credential.cert('./service-account-credentials.json'),
databaseURL: process.env.REACT_APP_FIREBASE_DATABASE_URL,
});
const config = {
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
};
const storageBucket = admin.storage().bucket(config.storageBucket);
const firestore = admin.firestore();
// const functions = admin.apps[0].functions(); // not possible
const functions = firebase.apps[0].functions(); // possible, but Firestore.apps not initialized
我的选项是什么?在Node.js Admin SDK for firebase中没有调用可调用云函数的
firebase函数
客户端
但这并不是一个不合理的请求,所以我建议在上提交一个功能请求,这样其他人也可以参与进来
同时,唯一的选择是实现您自己,可能是基于他们的。以这段代码结束。用户id是firebase用户uid
const firebaseApp = async (userId: string) => {
if (firebase.apps?.length) {
firebase.apps.forEach((app) => app.delete());
console.log(`Deleted ${firebase.apps.length} apps`);
}
const customToken = await admin.auth().createCustomToken(userId);
const firebaseApp = firebase.initializeApp(config);
await firebaseApp.auth().signInWithCustomToken(customToken);
return firebaseApp;
};
谢谢你的回答,我期待着这样的回答。实际上,我正在考虑使用firebase用户的电子邮件和密码为“firebase”lib初始化另一个应用程序。我来到这里,是想从运行Nodejs的Google Cloud IoT设备中找到一种使用
HttpScalable
的方法。我需要调用一个云函数,请求Mender在他们的平台上对设备进行预授权。当设备首次启动时,从systemd服务@DougStevens提到使用一个服务帐户,我有,但听起来并不能解决我的问题。这方面有什么新的发展或建议的解决方法吗?我在回答中提到的解决方法仍然是我所知道的唯一的解决方法。我尝试使用web sdk运行,因为它注意到它适合于“运行Node.js的IoT设备”。但是它扔<代码>menderPreAuth错误:错误:内部(节点:773)未处理PromiserEjectionWarning:错误:新HttpsErrorImpl(/data/node_modules/.pnpm/@firebase)处的内部/functions@0.6.1_e9d66a23fa701e65014ff8d410061da5/node_modules/@firebase/functions/dist/index.node.cjs.js:62:28)什么是“错误:内部”?对不起,但这不是一个好地方,以帮助这一点。如果您在应用程序中实现云功能时遇到问题,请在自己的应用程序中发布新问题。
const firebase = await firebaseApp('WObPvJbZDIR9WB72Tun8Jg4D0ky2');
await firebase
.functions('europe-west1')
.httpsCallable('myFunction')(doc);