Autenticar con Firebase de forma anónima

Puede usar Firebase Authentication para crear y usar cuentas anónimas temporales para autenticarse con Firebase. Estas cuentas anónimas temporales se pueden utilizar para permitir que los usuarios que aún no se hayan registrado en su aplicación trabajen con datos protegidos por reglas de seguridad. Si un usuario anónimo decide registrarse en su aplicación, puede vincular sus credenciales de inicio de sesión a la cuenta anónima para que pueda continuar trabajando con sus datos protegidos en sesiones futuras.

Antes de que empieces

  1. Si aún no lo has hecho, sigue los pasos de la guía de introducción .

  2. Habilite el inicio de sesión anónimo:

    • En la sección Autenticación de Firebase console, abre la página Método de inicio de sesión .
    • En la página Método de inicio de sesión , habilite el método de inicio de sesión anónimo y haga clic en Guardar .

Autenticarse con Firebase de forma anónima

Cuando un usuario que no ha iniciado sesión utiliza una función de la aplicación que requiere autenticación con Firebase, inicia sesión de forma anónima llamando signInAnonymously() :

try {
  final userCredential =
      await FirebaseAuth.instance.signInAnonymously();
  print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
  switch (e.code) {
    case "operation-not-allowed":
      print("Anonymous auth hasn't been enabled for this project.");
      break;
    default:
      print("Unknown error.");
  }
}

Convertir una cuenta anónima en una cuenta permanente

Cuando un usuario anónimo se registra en su aplicación, es posible que desee permitirle continuar su trabajo con su nueva cuenta; por ejemplo, es posible que desee que los artículos que el usuario agregó a su carrito de compras antes de registrarse estén disponibles en su nueva cuenta. carrito de compras de la cuenta. Para hacerlo, complete los siguientes pasos:

  1. Cuando el usuario se registre, complete el flujo de inicio de sesión para el proveedor de autenticación del usuario hasta, pero sin incluir, llamar a uno de los métodos signInWith . Por ejemplo, obtenga el token de identificación de Google del usuario, el token de acceso de Facebook o la dirección de correo electrónico y la contraseña.

  2. Obtenga un objeto Credential para el nuevo proveedor de autenticación:

    // Google Sign-in
    final credential = GoogleAuthProvider.credential(idToken: idToken);
    
    // Email and password sign-in
    final credential =
        EmailAuthProvider.credential(email: emailAddress, password: password);
    
    // Etc.
    
  3. Pase el objeto Credential al método linkWithCredential() del usuario que inicia sesión:

    try {
      final userCredential = await FirebaseAuth.instance.currentUser
          ?.linkWithCredential(credential);
    } on FirebaseAuthException catch (e) {
      switch (e.code) {
        case "provider-already-linked":
          print("The provider has already been linked to the user.");
          break;
        case "invalid-credential":
          print("The provider's credential is not valid.");
          break;
        case "credential-already-in-use":
          print("The account corresponding to the credential already exists, "
              "or is already linked to a Firebase User.");
          break;
        // See the API reference for the full list of error codes.
        default:
          print("Unknown error.");
      }
      ```
    

Si la llamada a linkWithCredential() tiene éxito, la nueva cuenta del usuario puede acceder a los datos de Firebase de la cuenta anónima.

Próximos pasos

Después de que un usuario crea una nueva cuenta, esta cuenta se almacena como parte de su proyecto de Firebase y se puede usar para identificar a un usuario en cada aplicación de su proyecto, independientemente del método de inicio de sesión que utilizó el usuario.

En sus aplicaciones, puede obtener la información básica del perfil del usuario desde el objeto User . Consulte Administrar usuarios .

En las reglas de seguridad de Firebase Realtime Database y Cloud Storage, puede obtener el ID de usuario único del usuario que inició sesión a partir de la variable auth y usarlo para controlar a qué datos puede acceder un usuario.

Puede permitir que los usuarios inicien sesión en su aplicación utilizando varios proveedores de autenticación vinculando las credenciales del proveedor de autenticación a una cuenta de usuario existente.

Para cerrar la sesión de un usuario, llame signOut() :

await FirebaseAuth.instance.signOut();