Ir a la consola

Primeros pasos con Firebase Authentication en Android

Conecta la app a Firebase

Si aún no lo has hecho, agrega Firebase a tu proyecto de Android.

En tu archivo build.gradle de nivel de proyecto, asegúrate de incluir el repositorio Maven de Google en las secciones buildscript y allprojects.

Agrega Firebase Authentication a la app

Agrega la dependencia para la biblioteca de Android de Firebase Authentication al archivo Gradle (a nivel de la app) de tu módulo (generalmente app/build.gradle):

implementation 'com.google.firebase:firebase-auth:17.0.0'

Para usar un proveedor de autenticación, necesitas habilitarlo en Firebase console. Ve a la página de método de acceso en la sección Firebase Authentication para habilitar el acceso con correo electrónico y contraseña, y cualquier otro proveedor de identidad que desees en tu app.

Comprueba el estado de autenticación actual

  1. Declara una instancia de FirebaseAuth.

    Java
    Android

    private FirebaseAuth mAuth;

    Kotlin
    Android

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

    Java
    Android

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

    Kotlin
    Android

    // Initialize Firebase Auth
    auth = FirebaseAuth.getInstance()
  3. Cuando inicialices la actividad, verifica que el usuario haya accedido:

    Java
    Android

    @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
    Android

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

Registra usuarios nuevos

Crea un método createAccount nuevo que reciba una dirección de correo electrónico y una contraseña, las valide y, luego, cree un usuario nuevo con el método [createUserWithEmailAndPassword](/docs/reference/android/com/google/firebase/auth/FirebaseAuth.html#createUserWithEmailAndPassword(java.lang.String, java.lang.String).

Java
Android

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
Android

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

            // ...
        }

Agrega un formulario para registrar usuarios nuevos con su correo electrónico y contraseña, y llama a este método nuevo cuando lo envíen. Puedes ver un ejemplo en nuestra muestra de inicio rápido.

Acceso de usuarios existentes

Crea un método signIn nuevo que reciba una dirección de correo electrónico y contraseña, las valide y, luego, permita que un usuario acceda con el método signInWithEmailAndPassword.

Java
Android

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
Android

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

            // ...
        }

Agrega un formulario para que los usuarios accedan con su correo electrónico y contraseña, y llama a este método nuevo cuando se envíe. Puedes ver un ejemplo en nuestra muestra de inicio rápido.

Accede a la información del usuario

Si un usuario accedió con éxito, puedes obtener los datos de su cuenta en cualquier punto con el método getCurrentUser.

Java
Android

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
Android

val user = FirebaseAuth.getInstance().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

Explora las guías que explican cómo agregar otros servicios de identidad y autenticación: