firebase.auth () ошибка при создании пользовательского метода в java скрипте - PullRequest
1 голос
/ 06 января 2020

Это мой java скрипт для страницы регистрации для веб-сайта с использованием аутентификации firebase. Когда я заполняю адрес электронной почты и пароль до Тестирование оповещения будет выполнено, но firebase.auth () ..... it не будет выполняться, и страница автоматически получит refre sh.

    var email=document.getElementById("inemail").value;
    var password=document.getElementById("inpass").value;
    var password1=document.getElementById("inpass1").value;
    var lPassword=password.length;
    var lPassword1=password1.length;
    if(lPassword < 7)
    {
        alert("Password Should more than seven Charecter");
        return;
    }

    else if(password!=password1){
        alert("Correctly Enter the Password");
        return;
    }
    else if(password==password1 || lPassword1==lPassword)
    { 
    alert("Testing");
    firebase.auth().createUserWithEmailAndPassword(email.toString(),password.toString()).catch(function(error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            if (errorCode == 'auth/weak-password') {
              alert('The password is too weak.');
            } else {
              alert(errorMessage);
            }
            console.log(error);
          });

        firebase.auth().onAuthStateChanged(function(user) {
          if (user) {
            var email = user.email;
            alert("Sucessfully Created");
          } 
          else {
           alert("sorry Try again");
          }

        });

    }

}

in В этом скрипте есть ошибки? если есть ошибки, пожалуйста, помогите мне выяснить.

1 Ответ

2 голосов
/ 06 января 2020

Как объясняет Тичерхаз в своем комментарии, вам необходимо использовать метод then(), чтобы определить, когда Promise возвращается асинхронным методом createUserWithEmailAndPassword()

Следующие действия должны помочь:

firebase.auth().createUserWithEmailAndPassword(email.toString(),password.toString())
.then(userCredential => {
     var email = userCredential.user.email;
     alert("Sucessfully Created");
})
.catch(function(error) {
        var errorCode = error.code;
        var errorMessage = error.message;
        if (errorCode == 'auth/weak-password') {
          alert('The password is too weak.');
        } else {
          alert(errorMessage);
        }
        console.log(error);
      });
}

Обратите внимание, что, как описано в do c, "при успешном создании учетной записи пользователя этот пользователь также будет войдите в свое приложение ", поэтому вам не нужно использовать метод onAuthStateChanged() в этом случае .


В одном из ваших комментариев выше вы говорите" только до появления предупреждающего сообщения «проверка» этот скрипт выполняется На самом деле, если нет ошибки при создании нового пользователя, обратный вызов обработчика отклонения, переданный в catch(), не вызывается, и поэтому вы не получите ответ о том, что createUserWithEmailAndPassword() был правильно выполнен. Для этого вам нужен метод then().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...