使用新的firebase云功能,我决定将我的一些HTTP端点移动到firebase.一切都很好......但我有以下问题.我有两个端点由HTTP触发器(云功能)构建
虽然第一个端点很好,但对于我的第二个端点,我希望仅为经过身份验证的用户保护它.意思是拥有我之前生成的令牌的人.
我该如何解决这个问题?
我知道我们可以使用云函数获取Header参数
request.get('x-myheader')
Run Code Online (Sandbox Code Playgroud)
但有没有办法保护端点就像保护实时数据库一样?
firebase firebase-security firebase-authentication firebase-realtime-database google-cloud-functions
从VS Code集成终端我运行firebase serve --only functions,hosting
然后在调试选项卡中我创建了默认的launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${file}"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想调试服务器端(functions/index.js)而不是客户端.
我从https://code.visualstudio.com/docs/nodejs/nodejs-debugging尝试了一些配置而没有运气.
如何在VS Code中调试Firebase功能?
debugging firebase visual-studio-code google-cloud-functions
我刚刚升级到使用 Firebase Cloud Functions v1.x。根据这个答案
可调用函数与 HTTP 函数完全相同
考虑到这一点,我尝试转换我的 pre-1.x 模拟代码:
export const myHttpAction = functions.https.onRequest((req, res) => {
try {
const result = await myHttpActionWorker(req.body);
return res.send({ status: 'OK' });
} catch (err) {
console.error(err);
return res.status(500).send({ status: 'Server error' });
}
});
Run Code Online (Sandbox Code Playgroud)
到以下几点:
export const myHttpAction = functions.https.onCall(async (data, context) => {
console.log(context.auth);
try {
const result = await myHttpActionWorker(data);
return { status: 'OK' };
} catch (err) {
console.error(err);
return { status: 'Server error' };
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Google Cloud Functions Emulator在本地调试我的 Firebase 函数。Firebase 建议使用functions.https.onCall 函数而不是 functions.https.onRequest避免直接使用 http 调用。相反,Firebase 建议使用Firebase Functions SDK从代码调用此类函数。因为functions.https.onRequest我使用了http-trigger标志,但如何调试onCall功能?