web-dev-qa-db-fra.com

Je ne peux pas m'inscrire avec firebase

J'essaie de créer un formulaire d'inscription avec firebase et de me connecter également. J'ai essayé beaucoup de choses mais cela ne fonctionnera pas. Cette erreur persiste lorsque je clique sur le bouton d’inscription qui appelle la méthode auth.createUserWithEmailAndPassword(email, pass).

Une erreur réseau (telle que délai d'attente, connexion interrompue ou hôte inaccessible) s'est produite.

Ci-dessous, voici une partie de mon code HTML

<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>

et mon code JS

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

J'ai eu un problème similaire avec la connexion du périphérique à l'aide de Firebase, mais je pouvais me connecter sur le navigateur. J'ai utilisé les commandes suivantes pour résoudre le problème,

--cordova plugin supprimer cordova-plugin-whitelist--

--cordova plugin ajoute cordova-plugin-whitelist--

5
Suhas s

Bien que cette réponse ne soit pas pertinente pour le code ci-dessus, je soupçonne que beaucoup de gens cherchent l'erreur sur Google: 

"Une erreur réseau (telle qu'un délai d'attente, une connexion interrompue ou un hôte Inaccessible) s'est produite."

Il se peut que votre formulaire soit en réalité dans un élément de formulaire au format HTML. Petit bug, mais cela pourrait avoir d’énormes conséquences. Si vous suivez ce tutoriel: " https://www.youtube.com/watch?v=-OKrloDzGpU ", assurez-vous que votre formulaire ne comporte pas de <form></form>tag. Cela conduira à cette erreur! 

28
user2164689

Dans mon cas, le problème était résolu si vous tentiez de vous reconnecter à Internet.

7
SmelayaPanda

Si vous utilisez Cordova (ce que je ne suis pas sûr de savoir si vous l'êtes ou non, mais certaines réponses impliquent que vous puissiez l'être), y compris cordova-plugin-network-information a corrigé ce problème pour moi. J'ai confirmé que le fichier "navigator.onLine" était parfois "faux", ce qui, je pense, a amené Firebase à penser qu'il y avait un problème. Une fois que j'ai ajouté les informations réseau cordova-plugin-network à mon projet, le problème a disparu. Je n’ai pas cherché à comprendre pourquoi, mais je soupçonne que ce plugin a un meilleur wrapper dans le navigateur qui pourrait fournir de meilleures informations à Firebase. J'ai confirmé que ce problème est revenu après la suppression du plug-in, mais sa ré-application le résout. Je mettrai à jour ceci si je creuse plus profondément. J'espère que ça aide.

3
Jason Washo

J'ai eu le même problème aussi La façon dont j'ai résolu le problème était d'ajouter le domaine où l'application Firebase est hébergée sur la console Firebase.

3
meedgee

La solution pour moi était de l'essayer dans Firefox. Je ne sais pas pourquoi, mais j'ai aussi une erreur dans Chrome. Tu devrais essayer ça. Cordialement.

2
mijares93

Je l'ai résolu en désactivant mon bloqueur de publicité, qui dans mon cas était Ghostery. On dirait que c'est assez agressif.

0
Gabriel Wamunyu

Voici ce qui a résolu le problème pour moi (c'est pour une application mobile). Je ne pouvais pas utiliser une balise dans mon HTML. J'ai changé cela en une div comme suggéré dans les réponses précédentes. Je devais aussi fermer mon clavier. J'utilise ionic et j'ai besoin d'installer le clavier ionique natif. Juste avant ma fonction de connexion, j'ai ajouté this.keyboard.close() et tout a commencé à fonctionner. Si vous n'utilisez pas ionic, vous pouvez essayer le plugin cordova ou quelque chose de équivalent. J'espère que cela t'aides.

0
Derek Niemuth