javascript - firebase SERVER_ERROR 的电子邮件/密码身份验证

标签 javascript email authentication passwords firebase

我正在尝试使用 Firebase 的简单登录并尝试遵循 How do I use Firebase Simple Login with email & password 中列出的一般方法.

但是,每次我尝试创建一个新用户(或登录)时,我都会得到一个

SERVER_ERROR: The connection to wss://s-xxxxxxxx was interrupted while the page was loading.

这是怎么引起的,我该如何解决?

此外,当我对值进行硬编码(即在注册提交处理程序之外获取 createUser)时,它在 Firefox 上工作,但在 Chrome 上不工作。

login.html

<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase.js'></script>
    <script type='text/javascript' src='https://cdn.firebase.com/v0/firebase-simple-login.js'></script>
    </head>
    <body>
        <div id="login_or_register">
        </div>
        <button id="logout">Logout</button>
        <script type='text/javascript' src='loginScript.js'></script>
    </body>
</html>

loginScript.js

function showLoginRegister(auth){

                    $register_form = $('<form id="register">'+
                      '<input type="text" name="register-email" id="register-email" value="email@example.com">'+
                    '<input type="password" name="register-password" id="register-password" value="password">'+
                    '<input type="submit" value="Create an account!"/>'+'</form>')

                    $login_form = $('<form id="login">'+'<input type="text" name="login-email" id="login-email" value="email@example.com">'+
                    '<input type="password" name="login-password" id="login-password" value="password">'+
                    '<input type="checkbox" name="rememberCheckbox" id="rememberCheckbox" checked>'+
                    '<input type="submit" value="Sign in"/>'+'</form>')
                    $('#login_or_register').append($register_form,$login_form);

                    $("#register").submit(function() {
                        var email = $("#register-email").val();
                    var password = $("#register-password").val();
                    auth.createUser(email, password, function(error, user) {
                            if (!error) {
                                  auth.login("password", {
                                  email: email,
                                    password: password,
                                    rememberMe: false
                                });
                            }
                            else{
                                console.log(error);
                            }
                        });
                    });

                    $("#login").submit(function() {
                        var email = $("#login-email").val();
                    var password = $("#login-password").val();
                    var checkbox = $("#rememberCheckbox").val();
                      auth.login("password", {
                            email: email,
                            password: password,
                            rememberMe: checkbox
                        });
                    });  
                };


                var ref = new Firebase('https://xxx.firebaseio.com/');
                var auth = new FirebaseSimpleLogin(ref, function(error, user) {
                    if (error){
                        console.log(error);
                      return;
                  }
                  if (user) {
                    // user authenticated with Firebase
                        $("#logout").click(function(){
                            auth.logout();
                       })
                  } 
                  else {
                    showLoginRegister(this);
                      // user is logged out
                  }
                });

最佳答案

您看到的问题是登录方法的网络请求失败,因为您在完成之前离开当前页面。表单实际上正在提交,结果页面正在重定向/刷新。

为了防止这种行为,请更新您的代码以在每个 $(element).submit() 方法的底部包含一个 return false;,这将阻止提交表单并完成身份验证请求。

$("#el").submit(function() {
  // Do stuff here ...
  return false;
});

关于javascript - firebase SERVER_ERROR 的电子邮件/密码身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17630372/

相关文章:

PHP Sendmail 发送的电子邮件内容在包含 CSS 内联样式时不显示

php - 从 symfony 中的 cron 任务发送电子邮件

asp.net - 在 ASP.net "Properly"- 成员身份或身份验证提供程序中实现 OpenID?

c# - 带有 Visual Studios 2010 的 .NET 4.0 中的 ONVIF 身份验证

javascript - 播放声音并提醒

javascript - 在 Meteor 事件处理程序中访问模板助手字典

html - 如何使用 HTML 内联样式缩进段落的第一行?

http - 如何在 WebSphere Liberty 中为 SOAP 客户端设置 HTTP 基本身份验证

javascript - 如果 lodash 模板中不存在给定属性,如何添加默认值

javascript - 性能: Immutable. JS Map vs List与Plain JS