获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Introducción a la autenticación de Firebase en Android

Conecta tu aplicación a Firebase

Si aún no lo ha hecho, agregue Firebase a su proyecto de Android .

Agrega Firebase Authentication a tu aplicación

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'
}

Para usar un proveedor de autenticación, debe habilitarlo en Firebase console . Vaya a la página Método de inicio de sesión en la sección Autenticación de Firebase para habilitar el inicio de sesión con correo electrónico/contraseña y cualquier otro proveedor de identidad que desee para su aplicación.

(Opcional) Realice prototipos y pruebas con Firebase Local Emulator Suite

Antes de hablar sobre cómo su aplicación autentica a los usuarios, presentemos un conjunto de herramientas que puede usar para crear prototipos y probar la funcionalidad de autenticación: Firebase Local Emulator Suite. Si está decidiendo entre técnicas de autenticación y proveedores, probando diferentes modelos de datos con datos públicos y privados mediante las reglas de seguridad de autenticación y Firebase, o creando prototipos de diseños de interfaz de usuario de inicio de sesión, poder trabajar localmente sin implementar servicios en vivo puede ser una gran idea. .

Un emulador de autenticación es parte de Local Emulator Suite, que permite que su aplicación interactúe con el contenido y la configuración de la base de datos emulada, así como, opcionalmente, con los recursos de su proyecto emulado (funciones, otras bases de datos y reglas de seguridad).

El uso del emulador de autenticación implica solo unos pocos pasos:

  1. Agregar una línea de código a la configuración de prueba de su aplicación para conectarse al emulador.
  2. Desde la raíz del directorio de tu proyecto local, ejecuta firebase emulators:start .
  3. Uso de la interfaz de usuario de Local Emulator Suite para la creación de prototipos interactivos, o la API REST del emulador de autenticación para pruebas no interactivas.

Una guía detallada está disponible en Conecte su aplicación al emulador de autenticación . Para obtener más información, consulte la introducción de Local Emulator Suite .

Ahora continuemos con cómo autenticar a los usuarios.

Comprobar el estado de autenticación actual

  1. Declara una instancia de FirebaseAuth .

    Java

    private FirebaseAuth mAuth;

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
  2. En el método onCreate() , inicializa la instancia de FirebaseAuth .

    Java

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

    Kotlin+KTX

    // Initialize Firebase Auth
    auth = Firebase.auth
  3. 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();
        if(currentUser != null){
            reload();
        }
    }

    Kotlin+KTX

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        if(currentUser != null){
            reload();
        }
    }

Registrar nuevos usuarios

Cree un nuevo método createAccount que tome una dirección de correo electrónico y una contraseña, las valide y luego cree un nuevo usuario con el método createUserWithEmailAndPassword .

Java

mAuth.createUserWithEmailAndPassword(email, password)
        .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, "createUserWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
            }
        });

Kotlin+KTX

auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

Agregue un formulario para registrar nuevos usuarios con su correo electrónico y contraseña y llame a este nuevo método cuando se envíe. Puede ver un ejemplo en nuestra muestra de inicio rápido .

Iniciar sesión de usuarios existentes

Cree un nuevo método de signIn de sesión que tome una dirección de correo electrónico y una contraseña, las valide y luego inicie la sesión de un usuario con el método signInWithEmailAndPassword .

Java

mAuth.signInWithEmailAndPassword(email, password)
        .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, "signInWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }
            }
        });

Kotlin+KTX

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }
        }

Agregue un formulario para que los usuarios inicien sesión con su correo electrónico y contraseña y llame a este nuevo método cuando se envíe. Puede ver un ejemplo en nuestra muestra de inicio rápido .

Acceder a la información del usuario

Si un usuario ha iniciado sesión correctamente, puede obtener los datos de su cuenta en cualquier momento con el método getCurrentUser .

Java

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin+KTX

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // The user's ID, unique to the Firebase project. Do NOT use this value to
    // authenticate with your backend server, if you have one. Use
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

Próximos pasos

Explore las guías sobre cómo agregar otros servicios de identidad y autenticación: