Firebase - 身份验证自定义令牌错误auth / network-request-failed

时间:2016-11-25 13:00:56

标签: authentication firebase firebase-realtime-database

我曾尝试使用Firebase 3.5和3.6,但有相同的错误。我读了一些toipc,我删除了类型="提交"在表单中并在项目中添加域,但它始终报告。我用Firefox 50和Chrome 54测试了它 - 我在网上创建它。我的流程是:我调用ajax并接收数据 - 如果数据为true,则返回json include token和sucess = 1.在Ajax调用之后,如果有data和data.sucess = 1,我将使用data.token验证

  

AUTH /网络请求失败的

     

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

<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'
            });
        }
    });

1 个答案:

答案 0 :(得分:2)

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

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

希望这会有所帮助!!