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

标签 javascript firebase google-cloud-functions

我无法检索从“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/

相关文章:

javascript - 是否可以用Dc.js绘制分组条形图?

JavaScript 算法 : find starting and ending indices of consecutively repeated chars from a string

javascript - 在 meteor js 的同一页面上打开多个物化模式

javascript - 根据值从 Firebase JSON 树获取特定值

javascript - 云函数: Crop image > Resize to multiple sizes

javascript - 试图弄清楚如何安装这个 jquery 脚本

android - Firebase 函数接收对象而不是字符串

android - Firebase 远程配置和 Microsoft Codepush 之间的区别

node.js - 更新 CloudFunctions 上的子集合

javascript - Firebase云功能1.0,当前用户没有身份验证信息