Autentica con Firebase mediante cuentas con contraseña en Flutter

Puedes usar Firebase Authentication para permitir que los usuarios se autentiquen en Firebase con direcciones de correo electrónico y contraseñas.

Antes de comenzar

  1. Si aún no lo hiciste, sigue los pasos de la guía Cómo comenzar.

  2. Habilita el acceso con correo electrónico y contraseña. Para ello, sigue estos pasos:

    • En la sección Autenticación de Firebase console, abre la página Método de acceso.
    • En la página Método de acceso, habilita el método Acceso con correo electrónico y contraseña y haz clic en Guardar.

Crea una cuenta con contraseña

Para crear una cuenta de usuario nueva con una contraseña, llama al método 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);
}

Por lo general, puedes hacerlo desde la pantalla de registro de la app. Cuando un usuario nuevo se registre mediante el formulario de registro de la app, realiza los pasos de validación de la cuenta nueva necesarios, como verificar que se haya escrito correctamente la contraseña y que cumpla con los requisitos de complejidad.

Si se creó correctamente la cuenta nueva, el usuario también accede. Si escuchas cambios en el estado de autenticación, se enviará un evento nuevo a tus objetos de escucha.

A modo de seguimiento para crear una cuenta nueva, puedes verificar la dirección de correo electrónico del usuario.

Permite que un usuario acceda con una dirección de correo electrónico y una contraseña

Los pasos para que un usuario acceda con una contraseña son similares a los pasos para crear una cuenta nueva. Desde la pantalla de acceso de la app, llama a 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.');
  }
}

Próximos pasos

Cuando un usuario crea una cuenta nueva, esta se almacena como parte de tu proyecto de Firebase y se puede usar para identificar a un usuario en todas las apps del proyecto, sin importar el método de acceso que usó.

En tus apps, puedes obtener la información básica de perfil del usuario a partir del objeto User. Consulta Administrar usuarios.

En tus reglas de seguridad de Firebase Realtime Database y Cloud Storage, puedes obtener el ID del usuario único que accedió a partir de la variable auth y usarlo para controlar a qué datos podrá acceder.

Para permitir que los usuarios accedan a la app con varios proveedores de autenticación, puedes vincular las credenciales de estos proveedores con una cuenta de usuario existente.

Para salir de la sesión de un usuario, llama a signOut():

await FirebaseAuth.instance.signOut();