Firebase注册时无法保存displayName和photoURL?求解决方案
Firebase注册后displayName/photoURL为null的解决方法
你的代码存在几个关键问题,导致用户信息无法正确保存:
- 直接修改
user对象的displayName、photoURL属性无效,这些是只读属性,必须调用Firebase Auth提供的updateProfile方法才能更新 - 错误处理中变量名拼写错误:
erro应为error - 页面跳转逻辑放在Promise外部,会在用户信息更新完成前就跳转到首页,导致获取不到最新数据
修正后的代码如下:
const signUp = () => { createUserWithEmailAndPassword(auth, email, password) .then(async (userCredential) => { const user = userCredential.user; // 调用官方方法更新用户信息 await updateProfile(user, { displayName: name, photoURL: photo }); // 确认信息更新完成后再跳转页面 navigation.navigate("Home"); }) .catch((error) => { const errmessage = error.message; alert(errmessage); }); };
核心修改说明:
- 使用
updateProfile(user, { ... })替代直接赋值,这是Firebase Auth更新用户公开信息的标准方式 - 用
async/await确保更新操作完成后再执行页面跳转,避免异步操作未完成导致的数据不同步 - 修正错误处理中的变量拼写问题,避免控制台报错
- 无需手动设置
user.email,createUserWithEmailAndPassword已经完成了邮箱的关联
内容的提问来源于stack exchange,提问作者KreaN
相关产品推荐
相关产品推荐

