¿Cómo usar la biblioteca de autenticación de Firebase UI en Android?

Firebase UI es una biblioteca proporcionada por Firebase para aplicaciones de Android que facilita tantas tareas al integrar Firebase en Android. Esta biblioteca proporciona tantas funciones adicionales que podemos integrar en nuestro Android muy fácilmente. En este artículo, veremos el uso de esta biblioteca para agregar autenticación en nuestras aplicaciones de Android. 

¿Cuáles son los beneficios de usar la biblioteca de autenticación de Firebase UI?

  • Al usar esta biblioteca, el código que necesitamos para integrar cualquier autenticación específica se reduce y será más fácil para el flujo de autenticación del usuario.
  • Al usar esta biblioteca, podemos usar múltiples proveedores de autenticación a la vez dentro de nuestras aplicaciones, como correo electrónico y contraseña, Facebook, teléfono, Google y muchos más.
  • Las tareas de administración de cuentas se vuelven fáciles al usar esta biblioteca.
  • La propia biblioteca crea la interfaz de usuario de inicio de sesión para cada proveedor de autenticación; puede personalizar la interfaz de usuario según los requisitos.
  • Con esta biblioteca, podrá vincular de forma segura cuentas de usuario para diferentes identidades.
  • Con esta biblioteca, puede agregar integración automática con Smart Lock para contraseñas para el inicio de sesión entre dispositivos.

¿Qué vamos a compilar con la biblioteca de autenticación de Firebase UI?

Usando esta biblioteca, simplemente estamos creando una aplicación en la que pediremos a los usuarios que inicien sesión utilizando diferentes opciones de inicio de sesión, como Google, correo electrónico y contraseña, y número de teléfono. Después de la autenticación exitosa de nuestro usuario. Redirigiremos a nuestro usuario a una nueva pantalla donde mostraremos un simple mensaje de bienvenida a nuestro usuario. Dentro de esa pantalla, agregaremos un botón simple que se usará para cerrar la sesión del usuario de la aplicación y redirigir a ese usuario a la pantalla de inicio de sesión para la autenticación. A continuación se muestra el GIF en el que conocerá lo que vamos a construir en esta aplicación.

1) Autenticación telefónica

2) Autenticación de correo electrónico

3) Autenticación de Google

Implementación paso a paso

Paso 1: crea un nuevo proyecto de Android Studio

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.

Paso 2: conecta tu aplicación a Firebase

Después de crear un nuevo proyecto en Android Studio. Conecta tu aplicación a Firebase. Para conectar su aplicación a firebase. Navegue a Herramientas en la barra superior. Después de eso, haga clic en Firebase. Se abrirá una nueva ventana en el lado derecho. Dentro de esa ventana, haga clic en Autenticación y luego en Autenticación de correo electrónico y contraseña. 

Después de hacer clic en la autenticación de correo electrónico y contraseña, verá la siguiente pantalla. Dentro de esta pantalla, haga clic en la primera opción para conectarse a Firebase y luego haga clic en la segunda opción para agregar la autenticación de Firebase a su aplicación.  

Paso 3: agregue la siguiente dependencia al archivo build.gradle

implementación ‘com.firebaseui:firebase-ui-auth:4.0.0’

Sus archivos Gradle deben tener las siguientes dependencias presentes en la sección de dependencias. 

Paso 4: agregue permisos de Internet en el archivo AndroidManifest.xml

Vaya a la aplicación > archivo AndroidManifest.xml dentro de ese archivo y agregue permiso para Internet. Agregue las siguientes líneas en el archivo  AndroidManifest.xml .

XML

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Paso 5: trabajar con el archivo activity_main.xml

No tiene que agregar ningún tipo de vista dentro de su activity_main.xml porque obtendremos nuestra interfaz de usuario de la dependencia de la interfaz de usuario de Firebase, solo personalizaremos esa interfaz de usuario de acuerdo con nuestros requisitos. Vaya a la aplicación > res > diseño > actividad_principal.xml y agréguele el siguiente código. 

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
</RelativeLayout>

Paso 6: Crear una nueva actividad para nuestra pantalla de inicio 

Navegue a la aplicación > java > el nombre del paquete de su aplicación > haga clic con el botón derecho en él y luego haga clic en Nuevo > Actividad vacía y asígnele un nombre a su actividad. Aquí le hemos dado el nombre como HomeActivity .

Paso 7: crear un estilo personalizado para nuestra interfaz de usuario de la pantalla de inicio de sesión

Usaremos un estilo personalizado para la interfaz de usuario, por lo que hemos creado un estilo personalizado para nuestra interfaz de usuario. Para agregar estilos a su interfaz de usuario de inicio de sesión. Vaya a aplicación > res > valores > themes.xml y agregue el siguiente código dentro de la etiqueta <resources>. 

XML

<!--below is the custom theme which we will be using for our Login Screen-->
    <!--We are using no action bar theme for our Login screen-->
    <style name="Theme" parent="Theme.AppCompat.Light.NoActionBar">
        <!--below line is for setting our text color to black-->
        <item name="android:textColor">@color/black</item>
        <!--we are setting our primary color to green-->
        <item name="colorPrimary">@color/purple_500</item>
        <!--we are setting our primary color dark to green-->
        <item name="colorPrimaryDark">@color/purple_500</item>
        <!--we are setting our edittext color to black-->
        <item name="android:editTextColor">@color/black</item>
        <!--we are setting our window background color to white-->
        <item name="android:windowBackground">@color/white</item>
    </style>

Paso 8: trabajar con el archivo MainActivity.java

MainActivity.java MainActivity.java

Java

import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import com.firebase.ui.auth.AuthUI;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
  
import java.util.Arrays;
import java.util.List;
  
public class MainActivity extends AppCompatActivity {
      
    // variable for Firebase Auth
    private FirebaseAuth mFirebaseAuth;
      
    // declaring a const int value which we
    // will be using in Firebase auth.
    public static final int RC_SIGN_IN = 1;
      
    // creating an auth listener for our Firebase auth
    private FirebaseAuth.AuthStateListener mAuthStateListner;
  
    // below is the list which we have created in which 
    // we can add the authentication which we have to 
    // display inside our app.
    List<AuthUI.IdpConfig> providers = Arrays.asList(
              
            // below is the line for adding 
            // email and password authentication.
            new AuthUI.IdpConfig.EmailBuilder().build(),
              
            // below line is used for adding google
            // authentication builder in our app.
            new AuthUI.IdpConfig.GoogleBuilder().build(),
              
            // below line is used for adding phone 
            // authentication builder in our app.
            new AuthUI.IdpConfig.PhoneBuilder().build());
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // below line is for getting instance 
        // for our firebase auth
        mFirebaseAuth = FirebaseAuth.getInstance();
          
        // below line is used for calling auth listener
        // for oue Firebase authentication.
        mAuthStateListner = new FirebaseAuth.AuthStateListener() {
            @SuppressLint("ResourceType")
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                  
                // we are calling method for on authentication state changed.
                // below line is used for getting current user which is
                // authenticated previously.
                FirebaseUser user = firebaseAuth.getCurrentUser();
                  
                // checking if the user 
                // is null or not.
                if (user != null) {
                    // if the user is already authenticated then we will
                    // redirect our user to next screen which is our home screen.
                    // we are redirecting to new screen via an intent.
                    Intent i = new Intent(MainActivity.this, HomeActivity.class);
                    startActivity(i);
                    // we are calling finish method to kill or 
                    // mainactivity which is displaying our login ui.
                    finish();
                } else {
                    // this method is called when our 
                    // user is not authenticated previously.
                    startActivityForResult(
                            // below line is used for getting 
                            // our authentication instance.
                            AuthUI.getInstance()
                                    // below line is used to 
                                    // create our sign in intent
                                    .createSignInIntentBuilder()
                                      
                                    // below line is used for adding smart 
                                    // lock for our authentication.
                                    // smart lock is used to check if the user 
                                    // is authentication through different devices.
                                    // currently we are disabling it.
                                    .setIsSmartLockEnabled(false)
                                      
                                    // we are adding different login providers which
                                    // we have mentioned above in our list.
                                    // we can add more providers according to our 
                                    // requirement which are available in firebase.
                                    .setAvailableProviders(providers)
                                      
                                    // below line is for customizing our theme for 
                                    // login screen and set logo method is used for
                                    // adding logo for our login page.
                                    .setLogo(R.drawable.gfgimage).setTheme(R.style.Theme)
                                      
                                    // after setting our theme and logo 
                                    // we are calling a build() method 
                                    // to build our login screen.
                                    .build(),
                            // and lastly we are passing our const 
                            // integer which is declared above.
                            RC_SIGN_IN
                    );
                }
            }
        };
    }
  
    @Override
    protected void onResume() {
        super.onResume();
        // we are calling our auth 
        // listener method on app resume.
        mFirebaseAuth.addAuthStateListener(mAuthStateListner);
    }
  
    @Override
    protected void onPause() {
        super.onPause();
        // here we are calling remove auth 
        // listener method on stop.
        mFirebaseAuth.removeAuthStateListener(mAuthStateListner);
    }
}

Paso 9: trabajar con el archivo activity_home.xml

inicio_actividad.xml inicio_actividad.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HomeActivity">
  
    <!--welcome message in text view-->
    <TextView
        android:id="@+id/idheadTV"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:padding="10dp"
        android:text="Geeks for Geeks \n Welcome to Home Screen"
        android:textAlignment="center"
        android:textColor="@color/purple_500"
        android:textSize="20sp" />
  
    <!--Button for logout from the app-->
    <Button
        android:id="@+id/idBtnLogout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/idheadTV"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:text="Logout"
        android:textAllCaps="false" />
      
</RelativeLayout>

Paso 10: trabajar con el archivo HomeActivity.java

InicioActividad.java InicioActividad.java

Java

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
  
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
  
import com.firebase.ui.auth.AuthUI;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
  
public class HomeActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
          
        // button for logout and initialing our button.
        Button logoutBtn = findViewById(R.id.idBtnLogout);
  
        // adding onclick listener for our logout button.
        logoutBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                  
                // below line is for getting instance
                // for AuthUi and after that calling a 
                // sign out method from FIrebase.
                AuthUI.getInstance()
                        .signOut(HomeActivity.this)
                          
                        // after sign out is executed we are redirecting
                        // our user to MainActivity where our login flow is being displayed.
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            public void onComplete(@NonNull Task<Void> task) {
                                  
                                // below method is used after logout from device.
                                Toast.makeText(HomeActivity.this, "User Signed Out", Toast.LENGTH_SHORT).show();
                                  
                                // below line is to go to MainActivity via an intent.
                                Intent i = new Intent(HomeActivity.this, MainActivity.class);
                                startActivity(i);
                            }
                        });
            }
        });
    }
}

Paso 11: habilite los proveedores de autenticación en Firebase Console

Para habilitar la autenticación telefónica en Firebase console. Vaya a la consola de Firebase . Ahora haga clic en la opción Ir a la consola y navegue hasta su proyecto. Después de eso, haga clic en su proyecto. Puede llegar a ver la siguiente pantalla.  

Después de hacer clic en Autenticación, verá la siguiente pantalla. En esta pantalla, haga clic en la pestaña Método de inicio de sesión.

Después de hacer clic en el método de inicio de sesión, verá debajo la lista de pantallas de autenticación. Haga clic en la opción Correo electrónico y contraseña y actívela.  

Haga clic en la opción Contraseña de correo electrónico y verá la siguiente pantalla emergente. Dentro de esta pantalla, haga clic en la opción habilitar y guárdela.  

Ahora, de manera similar, haga clic en la opción Teléfono como se muestra a continuación

Ahora podrá ver la siguiente opción después de hacer clic en la autenticación del teléfono, habilitar la autenticación del teléfono y guardarla. 

Ahora habilitaremos la Autenticación de Google habilitándola simplemente haciendo clic en la opción de Google de la lista. 

Después de hacer clic en la opción de Google, verá el siguiente mensaje emergente, haga clic en habilitarlo y guardarlo. 

Después de habilitar todos los métodos de autenticación, verá la siguiente pantalla con autenticación. 

Después de habilitar esta opción en Firebase Console. Ahora ejecute su aplicación y pruebe toda la autenticación. Puede llegar a ver la salida en la siguiente pantalla. 

Producción:

Hemos creado tres vídeos de salida en los que hemos mostrado cada autenticación. 

1) El primero es para la opción de inicio de sesión de Google

2) El segundo es para la autenticación mediante un número de teléfono

3) El tercero está usando autenticación de correo electrónico y contraseña

Enlace GitHub: https://github.com/ChaitanyaMunje/FirebasePhoneAuthentication/tree/FirebaseUIAuthentication

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *