Firebase не может видеть пользователя после использования createUserWithEmailAndPassword - PullRequest
0 голосов
/ 08 ноября 2019

Я новичок в firebase и создал очень простое приложение для регистрации пользователей. После регистрации пользователь не отображается в списке пользователей на моей консоли Firebase. Я следовал документации и некоторым учебникам на Youtube. Я чувствую, что сделал то же самое, но это не работает. Может кто-нибудь помочь мне решить эту проблему?

<!DOCTYPE html>
<html>
<head>
    <title>Happy Referrals - Sign Up Free!</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="../css/style.css">
</head>
<body>
<div class="signup-container">
     <form>
        <h3>Sign Up Happy Referrals for Free!</h3>
        <label>Email:</label>
        <input type="email" name="" id="email" />
        <label>Password:</label>
        <input type="password" name="" id="pw" />
        <button id="signup">Sign Up</button>
     </form>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- The core Firebase JS SDK is always required and must be listed first -->
<script src="https://www.gstatic.com/firebasejs/7.2.2/firebase-app.js"></script>
<!-- TODO: Add SDKs for Firebase products that you want to use
     https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.2.3/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.3/firebase-firestore.js"></script>

<script>
  // Your web app's Firebase configuration
  var firebaseConfig = {
    // keep secret
  };
  // Initialize Firebase
  firebase.initializeApp(firebaseConfig);

  $('#signup').on('click', function() {
    var email = $('#email').val();
        var pw = $('#pw').val();
        console.log(email);

        firebase.auth().createUserWithEmailAndPassword(email, pw).catch(function(error) {
              // Handle Errors here.
              var errorCode = error.code;
              var errorMessage = error.message;
              console.log(errorMessage);
            });
  })

</script>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Как вы прочтете в спецификации W3 , ваша кнопка имеет поведение по умолчанию submit. Поэтому ваша форма отправляется за до , когда запускается метод Firebase.

Таким образом, вам нужно явно указать тип кнопки следующим образом:

<button type="button" id="signup">Sign Up</button>

Также обратите внимание, что с JQUery лучше подождать, пока документ не будет «готов»». См. документ , в котором говорится:

Страницу нельзя безопасно манипулировать, пока документ не «готов». JQuery обнаруживает это состояние готовности для вас. Код, включенный в $ (document) .ready (), будет работать только после того, как страница объектной модели документа (DOM) будет готова для выполнения кода JavaScript.

Таким образом, вы можете адаптировать свой код script какследует:

<script>

    $( document ).ready(function() {
      // Your web app's Firebase configuration
      var firebaseConfig = {
        // keep secret
      };
      // Initialize Firebase
      firebase.initializeApp(firebaseConfig);

      $('#signup').on('click', function() {
        var email = $('#email').val();
            var pw = $('#pw').val();
            console.log(email);

            firebase.auth().createUserWithEmailAndPassword(email, pw).catch(function(error) {
                  // Handle Errors here.
                  var errorCode = error.code;
                  var errorMessage = error.message;
                  console.log(errorMessage);
                });
      });

    });

</script>
0 голосов
/ 08 ноября 2019
You can try using async/await:

$('#signup').on('click', function() {
        var email = $('#email').val();
        var pw = $('#pw').val();

        signUp(email,pw);

  });

async function signUp(email,pw){
    await 
firebase.auth().createUserWithEmailAndPassword(email, 
pw).catch(error=> {
            // Handle Errors here.
            var errorCode = error.code;
            var errorMessage = error.message;
             console.log(errorMessage);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...