首页 文章

Firebase身份验证JavaScript获得成功

提问于
浏览
4

使用以下Firebase电子邮件身份验证代码,您如何知道身份验证是否成功?

firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;

            if (errorCode === 'auth/wrong-password') {
              alert('Wrong password.');
            } else {
              alert(errorMessage);         
            }

            console.log(error);
        });

我知道很容易认识到身份验证是否不成功,但是,我如何知道用户是否能够使用他们提供的凭据登录?似乎没有“成功”登录的回调 . 我目前有一个登录表单,我想要成功登录导航 .

3 回答

  • 15

    这里有一个firebaser

    @ ksav的答案显示了检测用户何时登出的首选方式 .

    为了完整性,我想展示第二种检测方法,即直接响应 signInWithEmailAndPassword

    firebase.auth().signInWithEmailAndPassword(email, password).then(function(user) {
       // user signed in
    }).catch(function(error) {
        var errorCode = error.code;
        var errorMessage = error.message;
    
        if (errorCode === 'auth/wrong-password') {
            alert('Wrong password.');
        } else {
            alert(errorMessage);         
        }
        console.log(error);
    });
    

    用户登录后将调用 then() .

    我们在文档中不再强调这种方法的原因是它会错过很多情况 . 例如:

    • 当用户重新加载页面时,不会调用 then() . 另一方面, onAuthStateChanged() 回调也会被调用 will .

    • 用户退出登录(例如,如果无法刷新其短期令牌),则不会调用 catch() . 另一方面, onAuthStateChanged() 回调也会被调用 will .

    如果您想明确回复用户何时主动登录,我的回答中的方法可能会有用 . 但在大多数情况下,我们建议您使用@ ksav的答案 .

  • 6

    获取当前登录的用户


    获取当前用户的推荐方法是在Auth对象上设置观察者:

    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        // User is signed in.
      } else {
        // No user is signed in.
      }
    });
    

    文件:https://firebase.google.com/docs/auth/web/manage-users

  • -1

    如果没有任何缓存,那么它就成功了 .

    var isSuccessful = true
    firebase.auth().signInWithEmailAndPassword(email, password).catch(function(error) {
            // Handle Errors here.
            var isSuccessful = false
            var errorCode = error.code;
            var errorMessage = error.message;
    
            if (errorCode === 'auth/wrong-password') {
              alert('Wrong password.');
            } else {
              alert(errorMessage);         
            }
    
            console.log(error);
        })
        finally {
         if(isSuccessful)
             //Success!
        }
    

相关问题