Authentication Firebase-身份验证自定义令牌错误身份验证/网络请求失败

Authentication Firebase-身份验证自定义令牌错误身份验证/网络请求失败,authentication,firebase,firebase-realtime-database,Authentication,Firebase,Firebase Realtime Database,我试过Firebase 3.5和3.6,但有相同的错误。我读过一些toipc,我删除了表单中的type=“submit”,并在项目中添加了域,但它总是报告。我已经用Firefox 50和Chrome 54测试过了——我是在网络上创建的。我的流程是:调用ajax并接收数据——如果数据为true,它将返回json include token,suces=1。在Ajax调用之后,如果have data和data.suces=1,我将使用data.token进行身份验证 身份验证/网络请求失败 如果出现

我试过Firebase 3.5和3.6,但有相同的错误。我读过一些toipc,我删除了表单中的type=“submit”,并在项目中添加了域,但它总是报告。我已经用Firefox 50和Chrome 54测试过了——我是在网络上创建的。我的流程是:调用ajax并接收数据——如果数据为true,它将返回json include token,suces=1。在Ajax调用之后,如果have data和data.suces=1,我将使用data.token进行身份验证

身份验证/网络请求失败

如果出现网络错误(例如超时、连接中断或 无法访问的主机)已发生


出现此错误的原因是
Auth
对象需要时间进行初始化。虽然您使用的是
超时
,但这并不保证初始化成功

根据Firebase文档,检查登录是否成功并获取当前用户的推荐方法是在
Auth
对象上设置一个观察者。因此,要解决此错误,请在onAuthStateChanged观测者中执行重定向
window.location.href


希望这有帮助

出现此错误是因为
Auth
对象初始化需要时间。虽然您使用的是
超时
,但这并不保证初始化成功

根据Firebase文档,检查登录是否成功并获取当前用户的推荐方法是在
Auth
对象上设置一个观察者。因此,要解决此错误,请在onAuthStateChanged观测者中执行重定向
window.location.href


希望这有帮助

我明天会试试看。默认情况下,它没有setTimeout,我之所以插入它是因为我认为firebase无法完成函数并报告问题,所以我插入了它。您不应该使用timeout来等待完成,因为您无法预测完成需要多长时间,而且您不想等待太久。几天前我遇到了同样的错误,这个方法解决了它。我明天会尝试测试它。默认情况下,它没有setTimeout,我之所以插入它是因为我认为firebase无法完成函数并报告问题,所以我插入了它。您不应该使用timeout来等待完成,因为您无法预测完成需要多长时间,而且您不想等待太久。几天前,我遇到了同样的错误,这个方法解决了这个问题。你也可以使用“.then”承诺,如下所示:
firebase.auth().signwithEmailAndPassword(email,password)。然后(user=>console.log(user)).catch((error)=>console.log(error))
您也可以使用“.then”承诺,如下所示:
firebase.auth().signiWithEmailAndPassword(email,password)。然后(user=>console.log(user)).catch((error)=>console.log(error))
<form id="form-login" action="" enctype="application/x-www-form-urlencoded">
<!-- Username -->
    <input id="username" name="username" type="text" size="20"  />
<!-- Password -->
    <input id="password" name="password" autocomplete="off" type="password" size="20"  />
<input id="btn-login" class="h_submit" value="Login" />
$('#btn-login').click(function(event) {
        event.preventDefault();
        
        var username = $.trim(jInputUsername.val());
        var password = $.trim(jInputPassword.val());
        if (!username || !password) {
            alert("Error");
        } else {
            
            $.ajax({
                url: '', 
                type: "post",
                data: {'username': username, 'password': password}, 
                success: function(data, textStatus, jqXHR) {
                    //        
                    if ($.isPlainObject(data)) {
                        //    On error
                        if (data && data.succeed) {
                            firebase.auth().signInWithCustomToken(data.token).catch(function(error) {
                              var errorCode = error.code;
                              var errorMessage = error.message;
                              if (errorCode === 'auth/invalid-custom-token') {
                                alert('Token problem.');
                              }
                              alert(errorMessage);
                            });
                            var fullHref = decodeURI(window.location.href);
                            setTimeout(window.location.href = fullHref.replace(hash, ''), 1000);
                        }
                    }
                },
                error: function( jqXHR, textStatus) {
                    console.log('Username or passord wrong");
                }
                , dataType:'json'
            });
        }
    });