Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Autenticarse con Firebase de forma anónima en Android

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puede usar Firebase Authentication para crear y usar cuentas anónimas temporales para autenticarse con Firebase. Estas cuentas anónimas temporales se pueden usar 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 ha hecho, agregue Firebase a su proyecto de Android .
  2. En el archivo Gradle de tu módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle ), agrega la dependencia para la biblioteca de Android Firebase Authentication. Recomendamos usar Firebase Android BoM para controlar el control de versiones de la biblioteca.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth'
    }
    

    Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.

    (Alternativa) Agregar dependencias de la biblioteca de Firebase sin usar el BoM

    Si elige no usar Firebase BoM, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos enfáticamente que use la lista de materiales para administrar las versiones de la biblioteca, lo que garantiza que todas las versiones sean compatibles.

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth:21.1.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx'
    }
    

    Al usar Firebase Android BoM , su aplicación siempre usará versiones compatibles de las bibliotecas de Firebase Android.

    (Alternativa) Agregar dependencias de la biblioteca de Firebase sin usar el BoM

    Si elige no usar Firebase BoM, debe especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Tenga en cuenta que si usa varias bibliotecas de Firebase en su aplicación, le recomendamos enfáticamente que use la lista de materiales para administrar las versiones de la biblioteca, lo que garantiza que todas las versiones sean compatibles.

    dependencies {
        // Add the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx:21.1.0'
    }
    
  3. Si aún no ha conectado su aplicación a su proyecto de Firebase, hágalo desde la consola de Firebase .
  4. Habilitar autenticación anónima:
    1. En Firebase console , abra la sección Auth .
    2. En la página Métodos de inicio de sesión , habilite el método de inicio de sesión anónimo .
    3. Opcional : si actualizó su proyecto a Firebase Authentication with Identity Platform , puede habilitar la limpieza automática. Cuando habilita esta configuración, las cuentas anónimas que tengan más de 30 días se eliminarán automáticamente. En proyectos con la limpieza automática habilitada, la autenticación anónima ya no contará para los límites de uso o las cuotas de facturación. Consulte Limpieza automática .

Autenticarse con Firebase de forma anónima

Cuando un usuario que no ha iniciado sesión usa una función de la aplicación que requiere autenticación con Firebase, inicie sesión de forma anónima mediante los siguientes pasos:

  1. En el método onCreate de tu actividad, obtén la instancia compartida del objeto FirebaseAuth :

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Al inicializar su actividad, verifique si el usuario está conectado actualmente:

    Java

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }

    Kotlin+KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }
  3. Finalmente, llame a signInAnonymously para iniciar sesión como usuario anónimo:

    Java

    mAuth.signInAnonymously()
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInAnonymously:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInAnonymously:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

    Kotlin+KTX

    auth.signInAnonymously()
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInAnonymously:success")
                    val user = auth.currentUser
                    updateUI(user)
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInAnonymously:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
    Si el inicio de sesión se realiza correctamente, puede utilizar el método getCurrentUser para obtener los datos de la cuenta del usuario.

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 elementos 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 FirebaseAuth.signInWith . Por ejemplo, obtenga el token de ID de Google del usuario, el token de acceso de Facebook o la dirección de correo electrónico y la contraseña.
  2. Obtenga una AuthCredential para el nuevo proveedor de autenticación:

    Inicio de sesión de Google

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);

    Kotlin+KTX

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
    Inicio de sesión en Facebook

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    Inicio de sesión con contraseña de correo electrónico

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    Kotlin+KTX

    val credential = EmailAuthProvider.getCredential(email, password)
  3. Pase el objeto AuthCredential al método linkWithCredential del usuario de inicio de sesión:

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
                }
            });

    Kotlin+KTX

    auth.currentUser!!.linkWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "linkWithCredential:success")
                    val user = task.result?.user
                    updateUI(user)
                } else {
                    Log.w(TAG, "linkWithCredential:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }

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

limpieza automática

Si actualizó su proyecto a Firebase Authentication with Identity Platform , puede habilitar la limpieza automática en Firebase console. Cuando habilita esta función, permite que Firebase elimine automáticamente las cuentas anónimas que tengan más de 30 días. En proyectos con la limpieza automática habilitada, la autenticación anónima no contará para los límites de uso o las cuotas de facturación.

  • Cualquier cuenta anónima creada después de habilitar la limpieza automática puede eliminarse automáticamente en cualquier momento después de 30 días posteriores a la creación.
  • Las cuentas anónimas creadas antes de habilitar la limpieza automática serán elegibles para la eliminación automática a partir de los 30 días posteriores a la activación de la limpieza automática.
  • Si desactiva la limpieza automática, todas las cuentas anónimas programadas para ser eliminadas permanecerán programadas para ser eliminadas. Estas cuentas no cuentan para los límites de uso ni para las cuotas de facturación.
  • Si "actualiza" una cuenta anónima vinculándola a cualquier método de inicio de sesión, la cuenta no se eliminará automáticamente.

Si desea ver cuántos usuarios se verán afectados antes de habilitar esta función y actualizó su proyecto a Firebase Authentication con Identity Platform , puede filtrar por is_anon en Cloud Logging .

Próximos pasos

Ahora que los usuarios pueden autenticarse con Firebase, puede controlar su acceso a los datos en su base de datos de Firebase mediante las reglas de Firebase.