无法通过FirebaseAuth获取当前用户的displayName

zpgglvta  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(105)

我已经做了一个登录页面,并在Flutter和Dart中使用Firebase认证注册页面。
注册后,我尝试检索当前用户的displayName,然而,当我尝试检索它时,我似乎得到的不是当前用户的displayName,而是我在此之前注册的displayName。
然而,当我热重启应用程序时,我可以很好地获得当前用户的详细信息。
我尝试使用以下代码检索当前用户的displayName属性:

static String? getUsername() {
    return FirebaseAuth.instance.currentUser?.displayName!;
  }

我调用它的方法是,初始化一个变量来存储我从方法中得到的用户名,存储在一个不同的dart文件中,不同于我得到的注册页面,我还在initState()方法中调用了这个方法。
下面是我注册用户和设置displayName的方法:

static void signUpUser(String username, String emailAddress, String password) async {
    try {
      final credential =
          await FirebaseAuth.instance.createUserWithEmailAndPassword(
        email: emailAddress,
        password: password,
      );
      // Here I set the displayName property
      await credential.user!.updateDisplayName(username);
    } on FirebaseAuthException catch (e) {
      if (e.code == 'weak-password') {} 
      else if (e.code == 'email-already-in-use') {}
    } catch (e) {}
  }

我尝试使用user.reload()和FirebaseAuth.userChanges()函数,但这些似乎并没有解决我的问题。
也许我尝试检索displayName属性时出错了,我错过了什么?我对开发自己的应用程序和使用Firebase还很陌生。

htzpubme

htzpubme1#

updateDisplayName返回的Future在调用底层的Firebase SDK时完成。它不会自动更新应用程序中的用户配置文件。这只会每小时自动更新一次(当SDK刷新配置文件所基于的ID令牌时),或者当用户注销并再次登录时。
要在这些自动条件之外从应用程序代码强制刷新配置文件,可以对用户对象执行call reload()

相关问题