【问题标题】:User displayName returns null in Firebase Auth用户 displayName 在 Firebase 身份验证中返回 null
【发布时间】:2021-08-23 14:44:00
【问题描述】:

我想在创建新用户时添加用户的 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);
  }

颤振:用户(显示名称:null,电子邮件:test1@gmail.com,emailVerified:false,isAnonymous:false,元数据:UserMetadata(创建时间:2021-06-06 10:35:13.689,lastSignInTime:2021-06- 06 10:35:13.689),phoneNumber:null,photoURL:null,providerData,[UserInfo(displayName:null,email:test1@gmail.com,phoneNumber:null,photoURL:null,providerId:密码,uid:test1@gmail .com)], refreshToken: ,tenantId: null, uid: gghhhhhhhh55555666)

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

【问题讨论】:

  • 在这样的打印语句之前尝试调用reload() (pub.dev/documentation/firebase_auth/latest/firebase_auth/User/…):await userCredential.user.reload()
  • 嗨,西蒙,我尝试了您的解决方案,仍然为空,
  • 更新 User.updateDisplayName 和 User.updatePhotoURL 时出现问题,现在使用 firebase_auth 1.3.0 他们已经修复了该错误...

标签: firebase flutter firebase-authentication


【解决方案1】:

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

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

这是完整的代码 sn-p:

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);
}

【讨论】:

    【解决方案2】:

    此问题的原因是 displayName 和 photoURL 无法设置为 null。更多细节在here 讨论。正如您所提到的,这个问题应该在 1.3.0 版本中得到修复。

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

    var currentUser = FirebaseAuth.instance.currentUser;
    debugPrint('${currentUser.displayName}');
    

    【讨论】:

    • 嘿@Omatt,升级到 1.3.0 后我仍然得到空值。任何代码如何设置 displayName ?
    • 能否检查displayName 是否成功更新?您可以使用 userCredential.user.updateDisplayName('Mohamed Rahuman').then(() => debugPrint('${userCredential.user.displayName}')).onError((error) => debugPrint('$error')); 更新 displayName
    • 仍然得到“null”..你试过了吗?
    • 原来在 UserCredential 注册期间获取 displayName 仍然为空。尝试使用currentUser 获取displayName。我试过了,它对我有用。
    • 好的,我会尝试从 currentUser 读取数据。
    猜你喜欢
    • 1970-01-01
    • 2018-10-30
    • 2018-03-10
    • 2021-03-18
    • 2021-09-27
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多