2016-11-25 25 views
0

Firebase 3.5と3.6を試しましたが、同じエラーがあります。私はいくつかのtoipcを読んでいましたが、私はform = "submit"という形式で削除しましたが、プロジェクトにはドメインを追加しましたが、それはいつも報告しています。 Firefox 50とChrome 54でテストしたところ、Webで作成しました。私の流れは:私はajaxを呼び出してデータを受信する - データが真であれば、jsonインクルードトークンと成功= 1を返す。Ajax呼び出し後、dataとdata.sucess = 1があれば、data.tokenで認証する。Firebase - Authカスタムトークンエラーauth/network-request-failed

(例えば、タイムアウト、接続中断または 到達不能ホストのような)ネットワークエラーが発生した場合にスロー

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

「firebase.auth()。signInWithEmailAndPassword(email、password)」 .then(ユーザ=> console.log(ユーザ)) .catch(エラー)=> console.log(エラー)); – illuminate

答えて

2

Authオブジェクトは初期化に時間がかかるため、このエラーが発生します。 timeoutを使用していますが、成功した初期化を保証するものではありません。

Firebaseのドキュメントhereによると、サインインが成功し、現在のユーザを取得するための推奨方法は、Authオブジェクトにオブザーバを設定することです。したがって、このエラーを解決するにはオブザーバ内のリダイレクトwindow.location.hrefを実行してください。

これが役立ちますように!

+0

私は明日テストしようとします。デフォルトでは、setTimeoutはありません。firebaseは関数を完了できず、問題を報告できないので、私はそれを挿入しました。 –

+1

どれくらい予測できないので、完了を待つためにタイムアウトを使うべきではありませんそれが完了するのにかかる時間と、あなたは長い間待たずにいたい。私は数日前に同じエラーに直面していた、この方法はそれを解決しました。 –