如何更改 Firebase 用户的电子邮件?

问题描述 投票:0回答:1

现在

updateEmail
已不再用于更新 Firebase 用户的电子邮件,如何更新用户的电子邮件?

 final user = GetCurrentUser().getUser()!;

  AuthCredential credential = EmailAuthProvider.credential(
    email: oldEmail,
    password: password,
  );

  final UserCredential userAuth = await user.reauthenticateWithCredential(credential);
  // userAuth.user.updateEmail(newEmail);  // deprecated


  await userAuth.user?.verifyBeforeUpdateEmail(newEmail);

  await FirebaseFirestore.instance.collection("users").doc(user.uid).update(
    {
      "email": newEmail,
    },
  );

这就是我到目前为止所得到的。它曾经因未知的魔法原因起作用,但此后就再也没有起作用。我收到一个异常,无法找到用户。其他时候,我会收到 Firestore 字段的更新(意味着代码运行时没有异常),但 Firebase 身份验证页面显示电子邮件没有任何更改。

flutter firebase dart google-cloud-platform firebase-authentication
1个回答
0
投票

现在不推荐使用 updateEmail 来更新 Firebase 用户的电子邮件。

确实,User#updateEmail() 函数已被弃用。

如何更新用户的电子邮件?

正如官方文档所述,更新电子邮件应使用的函数称为 User#verifyBeforeUpdateEmail() 其中:

将验证电子邮件发送到新的电子邮件地址。用户的邮箱验证通过后将会更新为新的邮箱。

你说:

它曾经因未知的神奇原因起作用,但此后就再也没有起作用。

这样的操作:

await userAuth.user?.verifyBeforeUpdateEmail(newEmail);

由于多种原因,可能会失败。在这种情况下,最好的做法是处理错误。所以我建议你这样做,否则,你永远不会知道操作何时失败,更重要的是,你永远不会知道失败的原因。

我收到无法找到用户的异常。

如果您尝试更新不存在的用户的电子邮件地址,则会抛出此类错误。

© www.soinside.com 2019 - 2024. All rights reserved.