2016-11-25 6 views
0

Ich hatte Firebase 3.5 und 3.6 versucht, aber haben denselben Fehler. Ich hatte etwas toipc gelesen und ich hatte type = "submit" im Formular entfernt und Domäne im Projekt hinzufügen, aber es meldet immer. Ich habe es mit Firefox 50 und Chrome 54 getestet - ich erstelle es im Web. Mein Fluss ist: Ich rufe Ajax und empfange Daten - Wenn Daten wahr ist, wird es JSON Include-Token zurückgeben und Erfolg = 1. Nach Ajax Anruf, wenn Daten und data.success = 1 haben, werde ich mit data.tokenFirebase - Auth benutzerdefinierten Token Fehler Auth/Netzwerk-Anfrage-fehlgeschlagen

auth

auth/Netzwerk-Anforderungs-failed

ausgelöst, wenn ein netz~~POS=TRUNC (wie Timeout-Verbindung oder unerreichbaren Host unterbrochen) aufgetreten ist.

<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

Sie könnten auch die ".then" Versprechen wie in den folgenden verwenden:. 'Firebase.auth() signInWithEmailAndPassword (E-Mail, Passwort) .then (user => console.log (Benutzer)) .catch ((Fehler) => console.log (Fehler)); ' – illuminate

Antwort

2

Dieser Fehler tritt auf, weil die Auth Objekt Zeit in Anspruch nimmt zu initialisieren. Obwohl Sie eine timeout verwenden, aber das garantiert nicht die erfolgreiche Initialisierung.

Nach Firebase-Dokumentation here die empfohlene Möglichkeit zu überprüfen, ob die Anmeldung erfolgreich ist und den aktuellen Benutzer erhalten, ist ein Beobachter auf dem Objekt Auth festlegen. Also, um diesen Fehler zu beheben, machen Sie die Umleitung window.location.href innerhalb der onAuthStateChanged Beobachter.

Hoffe das hilft !!

+0

Ich werde versuchen, es morgen zu testen. Standard, es hat nicht setTimeout, ich hatte es eingefügt, weil ich denke, Firebase kann Funktion nicht abschließen und Problem melden, also hatte ich es eingefügt –

+1

Sie sollten kein Timeout verwenden, um auf Fertigstellung zu warten, weil Sie nicht vorhersagen können, wie viel Zeit, die es dauern wird, bis Sie fertig sind und Sie nicht so lange warten wollen. Ich hatte vor ein paar Tagen denselben Fehler, diese Methode löste es. –

Verwandte Themen