簡體   English   中英

創建用戶身份驗證后注冊配置文件更新不起作用 Firebase

[英]Signup form the profile update after creating user auth is not working Firebase

我有一個用於 singup 的表單,它保存了用戶的名稱,包括一個 photoURL,額外的。 今天由於某種原因不再保存名稱,至少當我使用 firebase CLI 提取數據時,我看不到它。 請看下面的代碼:

我試圖改變邏輯,還注意到用戶沒有進入第二個

<div class="login-page">
    <div class="form">
      <form class="register-form" id="register-form">
        <input type="text" id="displayName" name="displayName" placeholder="name"/>
        <input type="text" id="token" name="phoneNumber" placeholder="token"/>
        <input type="password" id="password"name="password" placeholder="password"/>
        <input type="text" id="email" name="email" placeholder="email address"/>
        <button type="button" onclick="registerPasswordUser();">register</button>
        
      </form>

    </div>
  </div>


<script>
  // Your web app's Firebase configuration
  var firebaseConfig = {
    apiKey: "",
    authDomain: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: "",
    appId: ""
  };
 
  firebase.initializeApp(firebaseConfig);

  const auth = firebase.auth();

  function registerPasswordUser(){
    var form = document.getElementById("register-form");

    var email = document.getElementById("email").value;
    var displayName = document.getElementById("displayName").value;
    var password = document.getElementById("password").value;
    var photoURL = document.getElementById("token").value;

    var user = null;

    auth.createUserWithEmailAndPassword(email, password)
    .then(function () {
      if (auth && auth.currentUser) {
        user = auth.currentUser;
        console.log('auth', auth);
        console.log('currentUser', auth.currentUser);
        user.sendEmailVerification();
      }
    })
    .then(function () {
      user.updateProfile({
        displayName: displayName,
        photoURL: photoURL
      });
      form.reset();
      document.getElementById("email").value = "";
      document.getElementById("displayName").value = "";
      document.getElementById("password").value = "";
      document.getElementById("token").value = "";
      location.reload();
    })
    .catch(function(error) {
      console.log(error.message,7000);
    });
   
  }
</script>

控制台上也沒有出現任何錯誤,email 和密碼正在正確創建。 至少我可以在控制台中看到。 你有什么主意嗎?

*** 更新 ***

為了更新我的問題,我只是意識到這適用於 IE,保存用戶名的位置,如果我使用另一個瀏覽器,只是不要簡單的工作,如前所述,不要出現任何錯誤並保存好email 和密碼。

此處的代碼不會按預期工作:

auth.createUserWithEmailAndPassword(email, password)
    .then(function () {
      if (auth && auth.currentUser) {
        user = auth.currentUser;
        console.log('auth', auth);
        console.log('currentUser', auth.currentUser);
        user.sendEmailVerification();
      }
    })

即使您使用異步調用, auth.currentUser也不會像您期望的那樣擁有用戶。 您可以使用您在 function 中獲得的值,如下所示:

firebase.auth().createUserWithEmailAndPassword(email, password)
  .then((userCredential) => {
    // Signed in 
    var user = userCredential.user;
    // ...
  })
  .catch((error) => {
    var errorCode = error.code;
    var errorMessage = error.message;
    // ..
  });

或者每次用戶使用這種代碼進行更改時進行同步:

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    var uid = user.uid;
    // ...
  } else {
    // User is signed out
    // ...
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM