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
- Si aún no lo has hecho, agrega Firebase a tu proyecto de Android .
- En el archivo Gradle de su módulo (nivel de aplicación) (generalmente
<project>/<app-module>/build.gradle.kts
o<project>/<app-module>/build.gradle
), agregue la dependencia para la autenticación de Firebase. biblioteca para Android. Recomendamos utilizar Firebase Android BoM para controlar el control de versiones de la biblioteca.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.8.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.
¿Busca un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0) , tanto los desarrolladores de Kotlin como los de Java podrán depender del módulo de biblioteca principal (para más detalles, consulte las preguntas frecuentes sobre esta iniciativa ).(Alternativa) Agregue dependencias de la biblioteca de Firebase sin usar la BoM
Si elige no utilizar la BoM de Firebase, 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 encarecidamente usar la BoM 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:22.3.1") }
- Si aún no has conectado tu aplicación a tu proyecto de Firebase, hazlo desde Firebase console .
- Habilitar autenticación anónima:
- En Firebase console , abre la sección Auth .
- En la página Métodos de inicio de sesión , habilite el método de inicio de sesión anónimo .
- Opcional : si actualizó su proyecto a Firebase Authentication con Identity Platform , puede habilitar la limpieza automática. Cuando habilita esta configuración, las cuentas anónimas de 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 ni 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 utiliza una función de la aplicación que requiere autenticación con Firebase, inicie sesión del usuario de forma anónima completando los siguientes pasos:
- En el método
onCreate
de tu actividad, obtén la instancia compartida del objetoFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Al inicializar su Actividad, verifique si el usuario ha iniciado sesión actualmente:
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) }
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); }
- Finalmente, llame
signInAnonymously
para iniciar sesión como usuario anónimo:Si el inicio de sesión se realiza correctamente, puede utilizar el métodoKotlin+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) } }
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); } } });
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 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:
- 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 identificación de Google del usuario, el token de acceso de Facebook o la dirección de correo electrónico y la contraseña. Obtenga una
AuthCredential
para el nuevo proveedor de autenticación:Iniciar sesión en Google
Kotlin+KTX
val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
Java
AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
Iniciar sesión en Facebook
Kotlin+KTX
val credential = FacebookAuthProvider.getCredential(token.token)
Java
AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
Inicio de sesión con contraseña de correo electrónico
Kotlin+KTX
val credential = EmailAuthProvider.getCredential(email, password)
Java
AuthCredential credential = EmailAuthProvider.getCredential(email, password);
Pase el objeto
AuthCredential
al métodolinkWithCredential
del usuario que inicia sesión: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) } }
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); } } });
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 con Identity Platform , puede habilitar la limpieza automática en Firebase console. Cuando habilitas esta función, permites que Firebase elimine automáticamente cuentas anónimas con 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 ni 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 de su creación.
- Las cuentas anónimas existentes serán elegibles para la eliminación automática 30 días después de habilitar la limpieza automática.
- Si desactiva la limpieza automática, cualquier cuenta anónima programada para su eliminación seguirá estando programada para su eliminació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 ha actualizado 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, puedes controlar su acceso a los datos en tu base de datos de Firebase usando las reglas de Firebase .