我是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!";
}
});