imj*_*red 8 firebase 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)
但是在提交到我的端点后/myHttpAction
,使用我在 1.x 之前使用的相同数据,我得到以下回复:
{
"error": {
"status": "INVALID_ARGUMENT",
"message": "Bad Request"
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么请求是“坏的”,因为它完全相同,而 Callable 函数“完全相同”。知道是什么给的吗?
我的 package.json 指定了"firebase-functions": "^1.0.1"
.
您误解了“完全相同”的含义(并省略了答案的其余部分!)。它们在安全性方面是相同的(正如最初的问题所问的那样),因为可调用函数是一个 HTTP 函数,在由可调用客户端 SDK 管理的幕后进行了额外的工作。答案列出了这些差异。这些差异对安全性没有任何影响。但是您不能简单地为 HTTP 函数交换一个可调用对象,并期望现有调用者的所有内容都相同。
如果您想在不使用客户端 SDK 的情况下调用可调用函数,则必须遵循其协议规范。有关的文档即将发布,但您可以在此处获得基础知识:
归档时间: |
|
查看次数: |
6415 次 |
最近记录: |