【问题标题】:Firebase auth error auth/network-requested-failedFirebase 身份验证错误 auth/network-requested-failed
【发布时间】:2018-07-25 10:51:39
【问题描述】:

我正在使用 firebase Hosting 来托管我的网站,我尝试使用电子邮件/密码登录,但此错误一直提示。

这是我使用的 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 代码,它会登录并工作。

编辑: 不知何故,如果我将表单标签更改为 div 它可以工作,但它没有任何意义。使用 html5 表单和 firebase 有什么不知道的问题吗?

【问题讨论】:

    标签: javascript html firebase firebase-authentication


    【解决方案1】:

    &lt;button&gt;&lt;form&gt; 元素中的默认行为是提交表单。这会导致您的页面重新加载并取消 Firebase 登录代码。

    这就是当您更改为 &lt;div&gt; 元素时它起作用的原因。

    你需要在你的按钮监听器中使用preventDefault 来防止这种行为:

    document.getElementById("btnLogin").addEventListener("click", e => {
          e.preventDefault(); // Stop the form from submitting
          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
    

    【讨论】:

    • 很好,谢谢,我已经搜索了好几天,似乎没有人澄清这一点。我希望这个答案能帮助其他有同样问题的人
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2019-11-22
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    相关资源
    最近更新 更多