将脚本应用于Firebase成功身份验证

时间:2019-01-20 19:23:54

标签: javascript firebase firebase-authentication

我有用于登录用户的标准脚本。我也想在成功登录时添加重定向,但是以当前形式,即使有错误,它也会重定向。如何重新制作脚本,使其仅在没有错误的情况下起作用?

function login(){
const userLogin = document.getElementById('loginEmail').value;
const userPassword = document.getElementById('loginPassword').value;

firebase.auth().signInWithEmailAndPassword(userLogin, userPassword).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
    // ...
    window.alert("Error" + errorMessage);
});
window.location.replace('home.html');
}

2 个答案:

答案 0 :(得分:2)

使用then()就像其他承诺一样。

firebase.auth().signInWithEmailAndPassword(userLogin, userPassword)
.then(function(user) {
    // do stuff here when sign in succeeds
})
.catch(function(error) {
    // Handle Errors here.
});

答案 1 :(得分:1)

Doug的答案仅在用户主动登录时有效。当用户重新加载页面时,将恢复其身份验证状态,但不会触发then()回调。如果您还想在这种情况下重定向它们,则可以改用onAuthStateChanged侦听器:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    window.location.replace('home.html');
  } else {
    // No user is signed in.
  }
});

这还将替换Doug的答案中添加的then()回调,但不会替换您已经拥有的catch()块,因为这可以在用户主动登录时处理问题。

另请参阅documentation on getting the signed in user