javascript - 反应firebase auth displayName返回null
问题描述
我正在尝试按照谷歌文档进行 Firebase 身份验证。用户注册后,他将重定向到“/”路径,然后我通过 onAuthStateChangedListener 获取用户显示名称,但它返回 null,尽管我正在检查完整的用户数据文件并包含 displayName 字段。
授权码
firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then((result) => {
result.user
.updateProfile({
displayName: nickname,
})
获取用户数据代码
firebase.auth().onAuthStateChanged((data) => {
if (data) setUser(data);
console.log(data);
});
解决方案
这是预期的行为:身份验证状态更改为.createUserWithEmailAndPassword(email, password)
. 一旦发生这种情况,调用result.user.updateProfile(...)
不会更改身份验证状态,因此不会导致再次调用身份验证状态更改侦听器。
如果您想确保您拥有最新的身份验证配置文件,请在更新配置文件后调用user.getIdToken(true)
或刷新 ID 令牌user.reload()
。但是这些都不会导致身份验证状态更改,因此它们也不会导致对您的身份验证状态更改处理程序的调用。
firebase.auth().currentUser, and pass that to
相反:在这些调用之后使用setUser()`获取当前用户。
推荐阅读
- c - 程序在数组中找到具有给定数字的一对
- java - 多个上下文路径的 jaxb2 问题
- watson-knowledge-catalog - 为什么在伦敦部署 Watson Knowledge Catalog 时,非结构化数据的 Profile 选项卡不显示?
- javascript - Gulp 4 - 拆分主 gulpfile.js
- javascript - 仅从 HTML 表单提交的字段的第一个字符
- android - Android 单元测试在枚举查找初始化时失败
- javascript - node.js perf_hooks 时间输出
- python - 如何将值插入到python中的嵌套表中?
- android - 从条形码扫描仪获取正确的输入
- mysql - 如何查询零件列表,以便轻松比较来自多个不同组的零件?(数据透视表?)