Firebase身份验证错误身份验证/网络请求失败

时间:2018-07-25 10:51:40

标签: javascript html firebase firebase-authentication

我正在使用Firebase Hosting托管我的网站,我尝试使用email / pwd登录,但此错误始终提示。

这是我使用的JS:

window.onload = () => initApp(); //Initiate screen

  function initApp(){
    console.log(firebase);

    document.getElementById("btnLogin").addEventListener("click", e => {
      var email = document.getElementById("inputEmail").value;
      var pwd = document.getElementById("inputPassword").value;

      firebase.auth().signInWithEmailAndPassword(email, pwd).catch(error => {
                          var errorCode = error.code;
                          var errorMessage = error.message;
                          console.log(errorCode + "-" + errorMessage);
                          alert(errorCode + "-" + errorMessage);
      }); //Login
    });//Login button click

    firebase.auth().onAuthStateChanged(user => {
      console.log("User: " + user);
      if (user) {
        // User is signed in.
        var displayName = user.displayName;
        var uEmail = user.email;
        var emailVerified = user.emailVerified;
        var photoURL = user.photoURL;
        var isAnonymous = user.isAnonymous;
        var uid = user.uid;
        var providerData = user.providerData;
        console.log(uEmail + " logged in");
        alert(uEmail + " logged in");
      } else {
        console.log("not logged in");
        alert("not logged in");
      }//Check user
    });//Check auth state changes        
  }//InitApp   

这是表单的HTML:

<form id="formLogin" class="form-signin">
    <h2 align="center" class="form-signin-heading">Inicia sessió</h2>
    <label for="inputEmail" class="sr-only">Correu electrònic</label>
    <input type="email" id="inputEmail" class="form-control" placeholder="Correu electrònic" required autofocus>
    <label for="inputPassword" class="sr-only">Contrassenya</label>
    <input type="password" id="inputPassword" class="form-control" placeholder="Contrassenya" required>        
    <button id="btnLogin"class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button>
  </form>

那么,这里的问题是什么?如果我在Chrome / Firefox控制台上使用此JS代码,则它可以登录并可以使用。

编辑: 如果我以某种方式将form标记更改为div,它会起作用,但没有任何意义。关于将html5表单与firebase一起使用是否有任何未知的问题?

1 个答案:

答案 0 :(得分:1)

hugetlbfs元素内的<button>的默认行为是提交表单。这将导致您的页面重新加载,并且Firebase登录代码被取消。

这就是为什么当您更改为<form>元素时起作用的原因。

您需要在按钮监听器中使用<div>来防止这种行为:

preventDefault