webentwicklung-frage-antwort-db.com.de

Ich kann mich nicht bei Firebase anmelden

Ich versuche, ein Anmeldeformular mit Firebase und Login zu erstellen. Ich habe so viele Dinge ausprobiert, aber es funktioniert nicht. Ich erhalte diese Fehlermeldung immer wieder, wenn ich auf die Anmeldeschaltfläche klicke, die die Methode auth.createUserWithEmailAndPassword(email, pass) aufruft.

Ein Netzwerkfehler (z. B. Timeout, unterbrochene Verbindung oder nicht erreichbarer Host) ist aufgetreten.

Hier ist ein Teil meines HTML-Codes

<div class="col l7" id="signup">
      <h4>Signup</h4>
      <div class="form card">
        <br>
        <div class="switch">
          <label>
                Student
                <input name="student_" id="student_" type="checkbox">
                <span class="lever"></span>
                Staff
              </label>
        </div>
        <div class="container">
          <input type="text" placeholder="Name" id="signup_fullname">
          <!--student/staff-->
          <input type="text" placeholder="Matric Number/Staff no." id="signup_matric">
          <input type="email" placeholder="Email" id="signup_email">
          <div class="input-field col s12">
            <select id="signup_dept">
                  <option value="" disabled selected>Select your department</option>
                  <option value="ics">ICS</option>
                  <option value="masscomm">Mass Comm.</option>
                  <option value="lis">Library Science</option>
                  <option value="tcs">Telecomm Science</option>
                  <option value="csc">Computer Science</option>
                </select>
          </div>
          <div class="input-field col s12">
            <select id="signup_level">
                  <option value="" disabled selected>Select your Level</option>
                  <option value="100">100 Level</option>
                  <option value="200">200 Level</option>
                  <option value="300">300 Level</option>
                  <option value="400">400 Level</option>
                  <option value="500">500 Level</option>
                </select>
          </div>
          <div class="input-field col s12">
            <select id="signup_religion">
                  <option value="" disabled selected>Select your religion</option>
                  <option value="1">Islam</option>
                  <option value="2">Christianity</option>
                </select>
          </div>
          <input type="password" placeholder="password" id="signup_password">
          <!--<input type="password" placeholder="Confirm password" id="signup_confirm_password">-->
          <button class="btn-large second-color" id="btnSignUp">signup</button></a>
        </div>
      </div>
      <br>
    </div>

und mein JS-Code

readystatemode = false;
(function () {
  var config = {
    apiKey: "<my API key>",
    authDomain: "<my auth domain>",
    databaseURL: "<my database url>",
    storageBucket: "<my storage bucket url>",
  };
  firebase.initializeApp(config);

  // Get Elements
  var student_ = document.getElementById('student_'); // check whether is a student or staff; expect on or off
  var student__;
  if (student_.value == "on") {
    student__ = "student";
  } else {
    student__ = "staff";
  }
  var signup_fullname = document.getElementById('signup_fullname');
  var signup_matric = document.getElementById('signup_matric');
  var signup_email = document.getElementById('signup_email');
  var signup_dept = document.getElementById('signup_dept');
  var signup_level = document.getElementById('signup_level');
  var signup_religion = document.getElementById('signup_religion');
  var signup_password = document.getElementById('signup_password');
  var login_email = document.getElementById('login_email');
  var login_password = document.getElementById('login_password');
  // buttons
  var btnLogin = document.getElementById("btnLogin");
  var btnSignUp = document.getElementById("btnSignUp");

  // signup event
  btnSignUp.addEventListener('click', e => {
    // Get Email and pass
    //TODO: check for real emails
    console.log("just clicked the signup button");

    var email = signup_email.value;
    var pass = signup_password.value;
    var auth = firebase.auth();
    // sign up
    const promise = auth.createUserWithEmailAndPassword(email, pass);
    promise
      .catch(e => console.log(e.message));

    if (auth.currentUser != null) {
      auth.currentUser.updateProfile({
        displayName: signup_fullname,
        userCategory: student__,
        matric: signup_matric,
        department: signup_dept,
        level: signup_level,
        religion: signup_religion
      }).then(function () {
        console.log("update successful");
        window.readystatemode = true;
      }, function (error) {
        console.log("update failed");
      });
    }
  });

  firebase.auth().onAuthStateChanged(firebaseUser => {
    if (firebaseUser && window.readystatemode) {
      console.log(firebaseUser);
      btnLogout.classList.remove('hide');
      window.location('./dashboard.html');
    } else {
      console.log("not logged in");
      btnLogout.classList.add('hide');
    }
  });

})();
6
Jalasem

Ich hatte ein ähnliches Problem mit der Geräteanmeldung über Firebase, konnte mich jedoch im Browser anmelden. Ich habe die folgenden Befehle verwendet, um das Problem zu beheben.

--cordova plugin entfernen cordova-plugin-whitelist--

--cordova plugin add cordova-plugin-whitelist--

5
Suhas s

Obwohl diese Antwort für den eigentlichen Code nicht relevant ist, vermute ich, dass viele Leute den Fehler google: 

"Ein Netzwerkfehler (wie Timeout, unterbrochene Verbindung oder Nicht erreichbarer Host) ist aufgetreten."

Möglicherweise befindet sich Ihr Formular tatsächlich in einem Formularelement im HTML-Code. Kleiner Fehler, aber es könnte große Konsequenzen haben. Falls Sie diesem Tutorial folgen: " https://www.youtube.com/watch?v=-OKrloDzGpU ", vergewissern Sie sich, dass Ihr Formular keinen <form></form>tag hat. Dies führt zu diesem Fehler! 

28
user2164689

In meinem Fall wurde das Problem behoben, wenn Sie versuchen, erneut eine Verbindung zum Internet herzustellen.

7
SmelayaPanda

Wenn Sie Cordova verwenden (was ich nicht sicher bin, ob Sie es sind oder nicht, aber einige Antworten deuten darauf hin, dass Sie es sind), einschließlich der Cordova-Plugin-Netzwerk-Informationen korrigierte dieses Problem für mich. Ich bestätigte, dass der 'navigator.onLine' gelegentlich 'falsch' war, was Firebase zu der Überzeugung brachte, dass es ein Problem gab. Nachdem ich meinem Projekt die Cordova-Plugin-Netzwerkinformationen hinzugefügt hatte, war das Problem nicht mehr vorhanden. Ich habe nicht tief in den Grund gegangen, aber ich vermute, dass dieses Plugin einen besseren Wrapper um den Navigator herum hat, der Firebase bessere Informationen liefert. Ich habe bestätigt, dass dieses Problem nach dem Entfernen des Plugins wieder aufgetreten ist, aber durch erneutes Anwenden wird es behoben. Ich werde dies aktualisieren, wenn ich tiefer grabe. Ich hoffe das hilft.

3
Jason Washo

Ich hatte auch das gleiche Problem Die Lösung, die ich gelöst habe, bestand darin, die Domäne hinzuzufügen, in der die Firebase-App auf der Firebase-Konsole gehostet wird

3
meedgee

Die Lösung für mich war, es in Firefox auszuprobieren. Ich weiß nicht warum, aber ich habe auch einen Fehler in Chrome erhalten. Das solltest du versuchen. Grüße.

2
mijares93

Ich habe es gelöst, indem ich meinen Werbeblocker deaktiviert hatte, der in meinem Fall Ghostery war. Es scheint ziemlich aggressiv zu sein.

0
Gabriel Wamunyu

Hier ist, was das Problem für mich gelöst hat (dies ist für eine mobile App). Ich konnte kein Tag in meiner HTML-Datei verwenden. Ich habe dies in ein Div geändert, wie in früheren Antworten vorgeschlagen. Ich musste auch meine Tastatur schließen. Ich verwende ionic und brauchte, um die ionische native Tastatur zu installieren. Kurz vor meiner Login-Funktion fügte ich this.keyboard.close() hinzu und alles begann zu funktionieren. Wenn Sie nicht ionisch verwenden, können Sie das Cordova-Plugin oder etwas Ähnliches ausprobieren. Hoffe das hilft.

0
Derek Niemuth