firebase - Flutter - firebase_auth updateProfile 方

我正在使用 Flutter 和 Firebase 创建应用。我有一些奇怪的问题。我正在创建身份验证,它工作正常,但是当我尝试将一些集合添加到我的 Firestore 数据库时,displayName 的记录设置为 null。

Future<FirebaseUser> createUser(email, password, displayName) async {
    final FirebaseUser user = await _auth.createUserWithEmailAndPassword(
        email: email, password: password);

    UserUpdateInfo info = new UserUpdateInfo();
    info.displayName = displayName;
    _auth.updateProfile(info);

    Firestore.instance.collection('users').document().setData({
      'name': user.displayName,
      'uid': user.uid,
      'email': user.email,
      'isEmailVerified': user.isEmailVerified,
      'photoUrl': user.photoUrl,
    });

    return user;
  } 

这是创建用户的 Future 类。

void _handleSubmitted() {
    userAuth
        .createUser(
        emailController.text, passwordController.text, nameController.text)
        .then((onValue) {
      print("Sign Up button clicked: $onValue");

    });
  }

这个方法是点击注册按钮时的句柄。

集合看起来像这张照片。

最佳答案

如果我没记错的话,当您调用 updateDisplayNameupdatePhotoURL 时,本地用户配置文件不会立即更新。这意味着您应该将本地值写入数据库(最简单)或强制重新加载配置文件(最安全)。

写入局部值

如前所述,这是最简单的方法:

FirebaseFirestore.instance.collection('users').doc().set({
  'name': displayName,
  'uid': user.uid,
  'email': user.email,
  'isEmailVerified': user.emailVerified, // will also be false
  'photoUrl': user.photoURL, // will always be null
});

请注意,emailVerified 将始终为 false,并且 photoUrl 在新创建的电子邮件+密码帐户上将始终为 null

强制重新加载配置文件

您可以通过调用 FirebaseUser.reload() 来强制重新加载用户数据。 :

await _auth.currentUser!.updateDisplayName(displayName);
await _auth.currentUser!.updateEmail(newEmail);
await _auth.currentUser!.updatePhotoURL(photoURL);
await _auth.currentUser!.reload();

user = _auth.currentUser;

关于firebase - Flutter - firebase_auth updateProfile 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50986191/

相关文章:

flutter - 如何在指针向下事件的位置绘制 CustomPaint 小部件?

flutter - Sizedbox 与填充列和行中的距离

dart - 在 Flutter 中从文件中读取二维码

dart - Dart 中的类型定义

dart - Flutter:创建时间线 UI

java - flutter 中是否有任何类可以像处理程序一样工作?

Flutter - 如何将图像定义转换为图标定义?

dart - 我可以在未来的构建器上使用多种方法吗?

dart - 如何在弹出菜单中使用单选按钮?

dart - 如何为 Flutter 应用绘制折线图?