当前位置: 首页 > 知识库问答 >
问题:

用户displayName在Firebase身份验证中返回null

蒋鹏鹍
2023-03-14

我想在创建新用户时添加用户的DisplayName。当我尝试使用updateProfile方法时,它会发出以下警告

///更新用户的配置文件数据。

@已弃用('将在版本2.0.0中删除。''改用updatePhotoURL和updateDisplayName。',

你怎么能避开这个??

      String email, String password) async {
    final UserCredential userCredential =
        await _firebaseAuth.createUserWithEmailAndPassword(
            email: email.trim(), password: password.trim());
    await userCredential.user.updateDisplayName('Mohamed Rahuman');
    User user = userCredential.user;
    print(user);
    return _userFromFirebaseUser(user);
  }

flutter: User(显示名称:null,电子邮件:test1@gmail.com,emailVerified: false,isAnonymous: false,元数据:UserMetadata(创建时间:2021-06-06 10:35:13.689,最后签名时间:2021-06-06 10:35:13.689),phoneNumber: null,photoURL: null,providerData,[UserInfo(显示名称:null,电子邮件:test1@gmail.com,电话号码:null,photoURL: null,providerId: password

此问题已修复:firebase_auth 1.3.0(请参阅更新日志)

共有3个答案

陈兴朝
2023-03-14

此问题的原因是displayName和photoURL无法设置为null。此处讨论了更多详细信息。正如您所提到的,此问题应从1.3.0版开始修复。

要获取注册期间配置的显示名称,可以通过调用FirebaseAuth实例上的< code>currentUser来获取。

var currentUser = FirebaseAuth.instance.currentUser;
debugPrint('${currentUser.displayName}');
章心水
2023-03-14

我在更新时在注册功能中遇到了同样的问题(updatePhotoURL)您需要通过以下方式更新您的用户

ourUser = FirebaseAuth.instance.currentUser;
await ourUser!.updatePhotoURL(defaultProfileImage);
await ourUser!.displayName(userName);
  Future register(
  String email,
  String password,
  String? name,
  String? mob,
  String? description,
  //DateTime? signUPDate,
      ) async {
    setIsLoading(true);
    try {
      UserCredential authResult = await _firebaseAuth
          .createUserWithEmailAndPassword(email: email, password: password,);
      ourUser = authResult.user;
      setIsLoading(false);
      //create new doc for the user with his unique uid
      await UserDatabaseServices(uid: ourUser!.uid)
          .addUserData(ourUser!.uid,email,password,name,mob,description,currentTime);
      ourUser = _firebaseAuth.currentUser;
      await ourUser!.updatePhotoURL(defaultProfileImage);
      notifyListeners();
      return ourUser;
    } on SocketException {
      setIsLoading(false);
      setMessage('No internet');
    } on FirebaseAuthException catch (e) {
      setIsLoading(false);
      setMessage(e.message);
    }

  }
苏高峰
2023-03-14

有同样的问题。通过调用解决:

await user.reload();
user = await _auth.currentUser;

这是完整的代码片段:

UserCredential result = await _auth.createUserWithEmailAndPassword(
          email: email, password: password);
User? user = result.user;
if (user != null) {
   //add display name for just created user
   user.updateDisplayName(displayName);
   //get updated user
   await user.reload();
   user = await _auth.currentUser;
   //print final version to console
   print("Registered user:");
   print(user);
}
 类似资料:
  • 这是关于Flutter Firebase认证插件。< br >我试图在创建新用户后发送验证电子邮件,但sendEmailVerification()在内部使用currentUser()。这在我看来像是一个bug,但为了以防万一,我向stackoverflow提出了一个问题。错误在Android和IOS上是一样的。< br > 前两行返回Firebase User。第三个返回null。第四,如果第三

  • 于是我在这里看到:https://firebase . Google . com/docs/auth/web/account-linking # link-auth-provider-credentials-to-a-user-account现在可以在Firebase中链接用户账号了。我还看到Firebase提供了匿名认证的功能,它为一个用户创建一个用户会话,不需要任何凭证。 在我们的应用程序中,

  • 该应用程序应该接受用户电子邮件和密码,并使用Firebase身份验证作为后端。我使用像素2作为模拟器。每次应用程序处理登录功能时,它都会崩溃。 下面是Java文件和gradle文件 Java文件:

  • 我正在尝试在反应式Spring Boot应用程序中配置Spring Security性,并包括依赖于新的Spring Security版本5.0.0的父项目。RC1: 我将我的Spring WebSecurity配置为使用自定义AuthenticationFilter来检索我的身份验证信息,以及使用我自己的提供者的自定义AuthenticationManager。 配置: ReactiveAuth

  • 我一直很难找到Google Firebase身份验证背后的SLA。根据托管和实时数据库的服务水平协议,Firebase的每月正常运行时间百分比应至少达到99.95%。它是否适用于身份验证服务?

  • 在本章中,我们将匿名认证用户。 步骤1 - 启用匿名身份验证 这和我们以前的章节是一样的。需要打开Firebase信息中心,点击侧边菜单中的Auth和标签栏内的认证方法,需要启用匿名身份验证。 第2步 - 登录功能 可以使用方法进行此认证。 示例 让我们来看看下面的例子,参考示例代码 -