gpt4 book ai didi

javascript - Firebase Web 客户端重写 https.onRequest 函数返回的错误消息,如何防止这种情况发生?

转载 作者:行者123 更新时间:2023-12-01 00:45:04 24 4
gpt4 key购买 nike

我无法检索从“https.onRequest”函数发回的消息。 firebase 客户端根据错误代码重写消息,我无法恢复最初发送的正文或 JSON。

关于 Firebase 函数:

exports.auth = functions.https.onRequest( (request, response) => {
cors(request, response, async () => {
try {
return response.status(200).json({
data: "Hello"
});

} catch (error) {
return response
.status(403)
.send('User not activated')
}
});
});

如果我在 chrome 开发控制台中分析请求的返回,一切都可以:正文(response.send):“用户未激活”

但是在正面

auth: function (email, password) {
var register = firebaseFunctions.httpsCallable('auth');

return register({
email: email,
password: password
})
.then(async (result) => {
// ...
})
.catch((err) => {
throw err
});
}

在我的 catch 语句中:

err.message > permission-denied
err.details > undefined
err.code > 403

我不知道如何恢复我发送的“用户未激活”消息,这将使我能够更准确地处理 403 错误代码:用户无法连接,因为它未激活。

非常感谢!

最佳答案

您混淆了可调用函数和常规 HTTP 类型函数。这根本行不通。

在函数方面,您将函数声明为常规 HTTP type function使用 onRequest 回调。这意味着您需要使用 HTTP 客户端库来访问它。

在您的客户端,您尝试以 callable type function 的形式调用该函数。使用 Functions 客户端 SDK。这要求您使用 onCall 回调声明您的函数,而不是您现在使用的 onRequest 回调。可调用对象有 special protocol这是由客户端 SDK 实现的。

客户端和服务器必须匹配;现在他们没有。如果您想使用可调用函数,请按照链接文档中的所有说明进行操作。如果您想要常规的 HTTP 类型函数,则不能使用 Functions 客户端 SDK。您必须使用其他一些 HTTP 客户端库。

关于javascript - Firebase Web 客户端重写 https.onRequest 函数返回的错误消息,如何防止这种情况发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57452946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com