Jam*_*mes 2 rest error-handling firebase google-cloud-functions
我的代码检查用户是否获得授权,如果用户获得授权,则运行正确的代码。如果用户不这样做,它就会reject()拒绝该承诺。
如果我运行经过身份验证的代码,我会得到
{"error":{"status":"INVALID_ARGUMENT","message":"Bad Request"}}
我正在尝试将状态代码更改为“禁止”(代码 403),您通常会这样做,res.status(403)但是因为这是一个承诺,所以它是不同的。如何更改返回的错误代码?
我的代码如下:
const cloudFunction = functions.https.onCall((data, context) => {
return new Promise(function(resolve, reject) {
auth.verifyIdToken(data.userId).then(function(decodedToken) {
if(claims.admin === true) {
// Run code if user has admin role
}
else {
reject()
// Return error code 403 because user does not have admin role
}
}).catch(err => reject(err)) // Return error code 401 because user is not logged in
})
});
Run Code Online (Sandbox Code Playgroud)
您无法更改可调用函数的 HTTP 状态。可调用函数本质上接管并隐藏请求和响应的 HTTP 协议。您所要做的就是指定输入和输出对象,SDK 会处理其他所有事情。
如果您需要控制响应的 HTTP 状态,则必须使用常规 HTTP 类型函数。然后您将完全控制请求和响应。
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |