首页 文章

通过Firebase电子邮件/密码登录

提问于
浏览
1

我正在尝试通过使用Firebase的电子邮件/密码注册来构建具有用户身份验证的基本Web应用程序 .

我的设置现在包括一个main.js文件,该文件包含以下内容:

var dbRef = new Firebase('https://url.firebaseIO.com');
var authClient = new FirebaseAuthClient(dbRef, function(error, user) {
  if (error) {
    // an error occurred while attempting login
    console.log(error);
  } else if (user) {
    // user authenticated with Firebase
    console.log('User ID: ' + user.id + ', Provider: ' + user.provider);
  } else {
    // user is logged out
    console.log('logged out!');
  }
});
function next(){
   window.location = 'index.html';
}
function test(){
     authClient.login('password', {
     email: email,
     password: password,
     rememberMe: true
    },next());
    // window.location = 'index.html';
}

我从表单和登录中获取电子邮件/密码值 . 这样可行 . 但是,只要我包含一个回调函数,然后将它们重定向到一个新的经过身份验证的页面,它就不再有效 . 事实上,大多数时候我都会收到“UNKOWN ERROR”回复 .

当我到达下一页时,我不再登录 . 如果我删除next()函数并保持在同一页面上,它就可以工作 - 即使我然后从控制台触发下一个函数 . 你应该采用不同的方式进入另一个页面吗?

我很确定存在某种通信问题(可能在页面切换之前登录没有返回?)因为如果我在下一个函数之前添加1s超时,那么它就可以了 . 但这肯定不是最佳做法吗?

谢谢!

1 回答

  • 2

    根据https://www.firebase.com/docs/security/simple-login-email-password.htmlauthClient.login() 方法实际上并不接受回调,因此您看到的问题可能是在返回回调之前导航离开当前页面的结果,如您所建议的那样 .

    我建议在auth客户端实例化期间传递的回调中进行重定向 . ( new FirebaseAuthClient(ref, callback) )并在您检测到已登录用户时重定向 . 在使用用户的当前身份验证状态进行实例化时,将调用此回调一次,然后在用户的身份验证状态更改时(例如登录或注销时)再次调用此回调 .

相关问题