gpt4 book ai didi

javascript - 无法通过 auth.onAuthStateChanged 中的 currentUser 访问 displayName - Firebase

转载 作者:行者123 更新时间:2023-12-02 21:35:45 27 4
gpt4 key购买 nike

使用 auth.createUserWithEmailAndPassword 创建新用户并更新配置文件后,firebase 身份验证监听器 (onAuthStateChanged) 在用户对象中显示 displayName,但无法访问。上传此行为的屏幕截图以及代码。

null - displayName displayName can be seen on expanding object

  export var signup = userData => {
return async dispatch => {
try {
var { username, email, password } = userData;
var createdUser = await auth.createUserWithEmailAndPassword(
email,
password
);
//updating auth profile
await createdUser.user.updateProfile({
displayName: username,
email: email
});
//storing user info in firestore
var userObj = {
username: username,
email: email,
joinedAt: serverTimestamp()
};
await firestore
.collection("users")
.doc(`${createdUser.user.uid}`)
.set(userObj);
//setting up auth state
dispatch(
setCurrentUser({
username: username,
uid: createdUser.user.uid
})
);
} catch (error) {
console.log(error.meesage)
}
};
};

componentDidMount = () => {
auth.onAuthStateChanged((user) => {
if(user){
console.log(user)
console.log(user.uid)
console.log(user.displayName);
console.log(user.email)
}
})
};

最佳答案

当您调用createUserWithEmailAndPassword()时,身份验证状态监听器将在用户创建后立即触发。此时,用户将不具有 displayName 属性。直到您调用 updateProfile() 后,该帐户才会有一个 displayName。但是,对 updateProfile() 的调用不会再次触发身份验证状态监听器。相反,您应该在内存或某个数据库中维护您自己使用 updateProfile() 添加的名称的记录,并在以后使用该值。

传递到身份验证状态监听器的用户对象将不会看到 displayName 的新值,直到用户注销并再次重新登录。

关于javascript - 无法通过 auth.onAuthStateChanged 中的 currentUser 访问 displayName - Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60497215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com