我是javascript的新手 . 我使用的是Firebase,可以选择创建帐户(用户名,电子邮件,密码),登录,通过Google登录,以及通过Facebook登录 .

我希望“测试”显示Firebase用户的displayName属性(从文本字段“txtName”获取) .

这在我退出然后重新登录,或使用Facebook或Google登录时有效 . 当我查看firebaseUser上的console.log时,它能够成功检索displayName . 当然,问题在于,当我想在其上执行innerHTML时(如果帐户不是Facebook或Google),displayName显示为null .

我听说这是Firebase中的一个错误 . 如果是这样,是否有任何解决方法,无需用户注销然后重新登录(除非它可以是自动的)?

btnSignUp.addEventListener('click', e => {
  const email = txtEmail.value;
  const pass = txtPassword.value;
  const name = txtName.value;
  const auth = firebase.auth();
  // Sign In
  const promise = auth.createUserWithEmailAndPassword(email, pass);
  promise.catch(e => console.log(e.message));
  auth.onAuthStateChanged(firebaseUser => {
    if(firebaseUser) {
      firebaseUser.updateProfile({
        displayName: name
      });
      console.log("display name: " + firebaseUser.displayName);
    } else { }
  });
});

firebase.auth().onAuthStateChanged(firebaseUser => {
  if(firebaseUser) {
    // User Logged in
    btnLogout.style.display = "block";
    testing.innerHTML = firebaseUser.displayName + "\n " + firebaseUser.email;
  } else {
    // User not logged in
    btnLogout.style.display = "none";
    testing.innerHTML = "Firebase User NOT Logged In!";
  }
});