有了functions.https.onRequest(app);,就可以立即使用express了。
我想知道是否有可能以同样的方式将functions.https.onCall(...)和express一起使用?
onCall(...)似乎有不同的签名,但也许仍然有一种方法可以在使用onCall(...)函数的同时继续使用express?
发布于 2019-03-07 04:22:50
不,这不可能。可调用函数强制端点使用特定路径、特定类型的输入(JSON通过POST)和特定类型的输出(也包括JSON)。考虑到可伸缩的工作方式的限制,Express并不能真正帮到你。您可以在documentation中阅读有关所有可调用协议的详细信息。您可以看到,可调用抽象了请求和响应的所有细节,这是您在使用Express时通常使用的细节。
发布于 2020-10-22 18:33:57
但是,真正起作用的是使用onRequest并调用它...然后你可以像正常一样使用express,并在客户端拥有firebase可调用的简单性……
然后你就可以像平常一样进行授权了。例如,使用以下中间件:
export const createFirebaseAuth = () => (req: express.Request, res: express.Response, next: express.NextFunction) => {
console.log('Time: ', Date.now());
const token = req.header('Authorization');
if (!token) {
res.status(400);
res.send('Authtoken must be sent with a request');
return;
}
admin
.auth()
.verifyIdToken(token.replace('Bearer ', ''))
.then((v) => {
req.user = v;
next();
})
.catch((error) => {
res.status(401);
res.send(error.message);
res.end();
});
}https://stackoverflow.com/questions/55031521
复制相似问题