Firebase用户显示名更新问题:重置密码%DISPLAY_NAME%占位符为空
问题:注册后更新displayName,重置密码邮件中%DISPLAY_NAME%仍为空
我尝试在用户注册后修改其显示名称,但重置密码邮件中的%DISPLAY_NAME%占位符仍为空,请问我的操作是否有误?
用户提供的代码:
//firstName是此thunk的参数 const auth = getAuth(fireApp); try { const authUserData = await createUserWithEmailAndPassword(auth, email, password); await updateProfile(auth.currentUser, {displayName: firstName}); } catch (error) {}
你的代码逻辑本身没问题,但问题出在Firebase Auth的机制上:
- 重置密码邮件里的
%DISPLAY_NAME%占位符,是在触发邮件时读取用户Auth数据的当前值,但updateProfile执行后,Firebase后台需要一点时间同步数据。如果在更新后立刻触发重置邮件,后台可能还没完成同步,导致读出来的还是初始的空值。 - 另外要先确认
firstName参数确实有有效值——可以在调用updateProfile前加个console.log(firstName),避免因为参数为空导致更新没生效。
解决步骤:
确保数据同步完成:在
updateProfile之后调用reload()重新加载用户数据,强制同步后台状态,再触发重置邮件:const auth = getAuth(fireApp); try { const authUserData = await createUserWithEmailAndPassword(auth, email, password); await updateProfile(auth.currentUser, {displayName: firstName}); // 重新加载用户数据,确保displayName同步到后台 await auth.currentUser.reload(); // 现在再发送重置密码邮件 // await sendPasswordResetEmail(auth, email); } catch (error) {}检查模板和参数:
- 登录Firebase控制台,确认重置密码邮件模板里的占位符是
%DISPLAY_NAME%,没有拼写错误; - 确认
firstName参数不是空字符串或undefined,避免更新操作等于没改。
- 登录Firebase控制台,确认重置密码邮件模板里的占位符是
如果是用户注册后过了很久才触发重置邮件但还是为空,那大概率是firstName参数为空,或者更新操作没执行到(比如代码分支问题),可以加日志排查。
内容的提问来源于stack exchange,提问作者saner
相关产品推荐
相关产品推荐

