使用基于密码的帐号进行 Firebase 身份验证 (Flutter)

借助 Firebase Authentication,您可以让用户使用电子邮件地址和密码进行 Firebase 身份验证。

准备工作

  1. 按照使用入门指南中的步骤操作(如果您尚未这样做)。

  2. 启用电子邮件地址/密码登录:

    • 在 Firebase 控制台的 Authentication 部分中,打开登录方法页面。
    • 登录方法页面中,启用 Email/password sign-in(电子邮件地址/密码登录)方法,然后点击保存

创建基于密码的帐号

如需创建使用密码的新用户帐号,请调用 createUserWithEmailAndPassword() 方法:

try {
  final credential = await FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: emailAddress,
    password: password,
  );
} on FirebaseAuthException catch (e) {
  if (e.code == 'weak-password') {
    print('The password provided is too weak.');
  } else if (e.code == 'email-already-in-use') {
    print('The account already exists for that email.');
  }
} catch (e) {
  print(e);
}

通常情况下,您可以从应用的注册界面执行此操作。当新用户使用您的应用注册表单注册时,完成您的应用需要的所有新帐号验证步骤,例如验证新帐号的密码是否输入正确并且符合您规定的密码复杂度要求。

如果新帐号创建成功,则该用户也同时登录。如果您正在监听身份验证状态变化,则系统会向监听器发送一个新事件。

在创建新帐号的后续步骤中,您可以验证用户的电子邮件地址

让用户使用电子邮件地址和密码登录

使用密码让用户登录的步骤与创建新帐号的步骤类似。从应用的登录界面调用 signInWithEmailAndPassword()

try {
  final credential = await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: emailAddress,
    password: password
  );
} on FirebaseAuthException catch (e) {
  if (e.code == 'user-not-found') {
    print('No user found for that email.');
  } else if (e.code == 'wrong-password') {
    print('Wrong password provided for that user.');
  }
}

后续步骤

用户创建新帐号后,此帐号会存储为您的 Firebase 项目的一部分,无论用户使用哪种登录方法,您都可以使用此帐号在您项目中的每个应用中识别该用户。

在您的应用中,您可以从 User 对象获取用户的基本个人资料信息。请参阅管理用户

在您的 Firebase Realtime Database 和 Cloud Storage 安全规则中,您可以从 auth 变量获取已登录用户的唯一用户 ID,然后用其控制用户可以访问哪些数据。

您可以将身份验证服务提供方凭据关联至现有用户帐号,让用户可以使用多个身份验证服务提供方登录您的应用。

如需让用户退出登录,请调用 signOut()

await FirebaseAuth.instance.signOut();