首页 > 解决方案 > 反应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);
    });

包含显示名称的屏幕在此处输入图像描述

标签: javascriptreactjsfirebase-authentication

解决方案


这是预期的行为:身份验证状态更改为.createUserWithEmailAndPassword(email, password). 一旦发生这种情况,调用result.user.updateProfile(...)不会更改身份验证状态,因此不会导致再次调用身份验证状态更改侦听器

如果您想确保您拥有最新的身份验证配置文件,请在更新配置文件后调用user.getIdToken(true)或刷新 ID 令牌user.reload()。但是这些都不会导致身份验证状态更改,因此它们也不会导致对您的身份验证状态更改处理程序的调用。

firebase.auth().currentUser, and pass that to 相反:在这些调用之后使用setUser()`获取当前用户。


推荐阅读