我是在Firebase Cloud Functions中使用API的新手,我需要将我的应用程序与ERP连接起来,以便ERP可以写入Firebase RTDB中名为Test的节点。为此,我编写了以下代码:
const functions = require("firebase-functions");
const admin = require('firebase-admin');
const express = require('express');
const app = express()
admin.initializeApp({
credential: admin.credential.cert('./credentials.json'),
databaseURL: "https://testdb.firebaseio.com"
});
const db = admin.database();
const endpoint = "/api/entradas";
const nodoTestDB = "test/";
app.post(endpoint, async (req, res) => {
try {
await db.ref(nodoTestDB + req.body.id).set({name: req.body.name });
return res.status(204).json();
} catch (error) {
console.log(error);
return res.status(500).send(error);
}
});
exports.app = functions.https.onRequest(app);
当我在Postman中测试该函数时,它工作得很好。然而,任何人都可以将URL放入并写入数据库,这不是我们的想法。
如何确保我创建的API的安全性,使其只有ERP可以访问?当我说安全地写时,它意味着:
- ERP有一个令牌或类似的东西,只有它知道,并允许它写入数据库。
1.只允许POST类型的连接
我看到在名为credentials的服务帐户中,我有一个private_key和一个private_key_id。这些密钥是否用于实现ERP的身份验证?
Firebase Realtime Rules在这种情况下有帮助吗?我理解不,因为在FCF中,我们使用Firebase-Admin
1条答案
按热度按时间q43xntqr1#
将此作为社区wiki发布,以提高社区成员的可见性。
根据@Doug史蒂文森和@most200的评论,您可以为
POST
使用API密钥或秘密值。此外,您还可以将API Gateway用于您的Cloud Functions,并且您可以使用服务帐户和签名的JWT。其他信息可以通过此link找到。