Autenticación de usuarios usando Firebase en Android

Firebase es una plataforma de desarrollo de aplicaciones móviles y web. Proporciona servicios que una aplicación web o una aplicación móvil pueden requerir. Firebase proporciona autenticación de correo electrónico y contraseña sin la sobrecarga de construir un backend para la autenticación de usuarios.

Los pasos para la autenticación de usuario de firebase son:

  • Paso 1:
    cree un nuevo proyecto en Android Studio o abra un proyecto existente en el que desee agregar autenticación y agregue firebase a esa aplicación de Android. Los pasos para agregar firebase se explican muy bien en el siguiente enlace: https://www.geeksforgeeks .org/agregando-firebase-a-la-aplicación-de-android/
  • Paso 2:
    Vaya a la consola de Firebase ( http://console.firebase.google.com/ ), navegue hasta su aplicación y, en la pestaña de autenticación, habilite la autenticación por correo electrónico/pasar.
  • Paso 3: activity_registration.xml
    Esta es su actividad de registro. Tiene dos EditTexts, un TextView, un botón y una barra de progreso. Todas estas vistas están contenidas en un Diseño Lineal con orientación vertical. Los EditTexts se utilizan para obtener el correo electrónico y la contraseña del usuario. El botón se usa para fines de registro después de completar el nombre de usuario y la contraseña.
    El código xml completo para la actividad de registro (actividad_registro) es:

    registro_actividad.xml

    <?xml version="1.0" encoding="utf-8"?>
      
    <!-- Linear Layout with vertical orientation and other properties -->
    <LinearLayout
        xmlns:android="http:// schemas.android.com/apk/res/android"
        xmlns:app="http:// schemas.android.com/apk/res-auto"
        xmlns:tools="http:// schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="15dp"
        tools:context=".RegistrationActivity">
      
        <!-- TextView for heading -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Register" />
      
        <!-- Edit text for email -->
        <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter your Email" />
      
        <!-- Edit text for password -->
        <EditText
            android:id="@+id/passwd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter your Password"
            android:inputType="textPassword" />
      
        <!-- Button for register with text "Register" -->
        <Button
            android:id="@+id/btnregister"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Register" />
      
        <!-- ProgressBar for loading time -->
        <ProgressBar
            android:id="@+id/progressbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone" />
    </LinearLayout>
  • Paso 4: RegistroActividad.java
    • Ahora el turno es de código Java para la actividad de registro.
    • En esto, tenemos un oyente de un clic adjunto al botón. Al hacer clic en el botón, se llama a registerNewUser(). En este método, se verifica si alguno de los parámetros que son el correo electrónico y la contraseña no está vacío. Si ese es el caso, se muestra un mensaje de error. Si ambos textos de edición tienen datos, se invoca el método createUserWithEmailAndPassword().
    • Para registrar un nuevo usuario , se utiliza la función createUserWithEmailAndPassword() que toma dos parámetros, que son el correo electrónico y la contraseña para los que desea registrarse. Dentro del método createUserWithEmailAndPassword(), se verifica el éxito de la tarea. Si la tarea se realiza correctamente, se dirige al usuario a MainActivity o al panel de control; de lo contrario, se muestra un mensaje de Toast con «error de registro».
    • Para la autenticación del usuario, tenemos que hacer referencia a FirebaseAuth. Podemos hacer referencia usando la función getInstance. El fragmento de código es:
      FirebaseAuth mAuth = FirebaseAuth.getInstance();

    El código Java para la actividad de registro es:

    RegistroActividad.java

    package com.geeksforgeeks.firebaseuserauthentication;
      
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Toast;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Button;
      
    import com.google.firebase.auth.FirebaseAuth;
    import com.google.firebase.auth.AuthResult;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
      
    public class RegistrationActivity extends AppCompatActivity {
      
        private EditText emailTextView, passwordTextView;
        private Button Btn;
        private ProgressBar progressbar;
        private FirebaseAuth mAuth;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_registration);
      
            // taking FirebaseAuth instance
            mAuth = FirebaseAuth.getInstance();
      
            // initialising all views through id defined above
            emailTextView = findViewById(R.id.email);
            passwordTextView = findViewById(R.id.passwd);
            Btn = findViewById(R.id.btnregister);
            progressbar = findViewById(R.id.progressbar);
      
            // Set on Click Listener on Registration button
            Btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    registerNewUser();
                }
            });
        }
      
        private void registerNewUser()
        {
      
            // show the visibility of progress bar to show loading
            progressbar.setVisibility(View.VISIBLE);
      
            // Take the value of two edit texts in Strings
            String email, password;
            email = emailTextView.getText().toString();
            password = passwordTextView.getText().toString();
      
            // Validations for input email and password
            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(),
                               "Please enter email!!",
                               Toast.LENGTH_LONG)
                    .show();
                return;
            }
            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(),
                               "Please enter password!!",
                               Toast.LENGTH_LONG)
                    .show();
                return;
            }
      
            // create new user or register new user
            mAuth
                .createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
      
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task)
                    {
                        if (task.isSuccessful()) {
                            Toast.makeText(getApplicationContext(),
                                           "Registration successful!",
                                           Toast.LENGTH_LONG)
                                .show();
      
                            // hide the progress bar
                            progressBar.setVisibility(View.GONE);
      
                            // if the user created intent to login activity
                            Intent intent
                                = new Intent(RegistrationActivity.this,
                                             MainActivity.class);
                            startActivity(intent);
                        }
                        else {
      
                            // Registration failed
                            Toast.makeText(
                                     getApplicationContext(),
                                     "Registration failed!!"
                                         + " Please try again later",
                                     Toast.LENGTH_LONG)
                                .show();
      
                            // hide the progress bar
                            progressBar.setVisibility(View.GONE);
                        }
                    }
                });
        }
    }
  • Paso 5: activity_login.xml
    Ahora, después de la actividad de registro, debemos crear la actividad de inicio de sesión. El diseño de la actividad de inicio de sesión es similar a la actividad de registro con dos textos de edición, un botón, una vista de texto para el encabezado, todo contenido en el diseño lineal con orientación vertical. Aquí está código completo para el archivo xml de activity_login.xml:

    actividad_login.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Linear Layout with vertical orientation and other properties -->
      
    <LinearLayout
        xmlns:tools="http://schemas.android.com/tools"
          
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="15dp"
        tools:context=".LoginActivity">
          
        <!-- TextView for heading -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Login"/>
              
        <!-- Edit text for email -->
        <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter your Email" />
              
        <!-- Edit text for password -->
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Enter your Password"
            android:inputType="textPassword" />
              
        <!-- Button for Login with text "Login" -->
        <Button
            android:id="@+id/login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Login" />
              
        <!-- ProgressBar for Loading Time -->
        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone" />
    </LinearLayout>
  • Paso 6: LoginActivity.java
    Aquí el código es muy similar a RegistrationActivity pero para iniciar sesión se usa la función signInWithEmailAndPassword() que toma el correo electrónico y la contraseña como parámetro y si ese usuario con correo electrónico y contraseña existe, será redirigido a la actividad principal o al Tablero. signInWithEmailAndPassword(), se comprueba el éxito de la tarea. Si la tarea se realiza correctamente, se dirige al usuario a la actividad principal o al panel; de lo contrario, se muestra un mensaje Toast con «Error de inicio de sesión». El código Java para la actividad de inicio de sesión es:

    LoginActivity.java

    package com.geeksforgeeks.firebaseuserauthentication;
      
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Toast;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Button;
      
    import com.google.firebase.auth.FirebaseAuth;
    import com.google.firebase.auth.AuthResult;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
      
    public class LoginActivity extends AppCompatActivity {
      
        private EditText emailTextView, passwordTextView;
        private Button Btn;
        private ProgressBar progressbar;
      
        private FirebaseAuth mAuth;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            // taking instance of FirebaseAuth
            mAuth = FirebaseAuth.getInstance();
      
            // initialising all views through id defined above
            emailTextView = findViewById(R.id.email);
            passwordTextView = findViewById(R.id.password);
            Btn = findViewById(R.id.login);
            progressbar = findViewById(R.id.progressBar);
      
            // Set on Click Listener on Sign-in button
            Btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    loginUserAccount();
                }
            });
        }
      
        private void loginUserAccount()
        {
      
            // show the visibility of progress bar to show loading
            progressbar.setVisibility(View.VISIBLE);
      
            // Take the value of two edit texts in Strings
            String email, password;
            email = emailTextView.getText().toString();
            password = passwordTextView.getText().toString();
      
            // validations for input email and password
            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(),
                               "Please enter email!!",
                               Toast.LENGTH_LONG)
                    .show();
                return;
            }
      
            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(),
                               "Please enter password!!",
                               Toast.LENGTH_LONG)
                    .show();
                return;
            }
      
            // signin existing user
            mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(
                    new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(
                            @NonNull Task<AuthResult> task)
                        {
                            if (task.isSuccessful()) {
                                Toast.makeText(getApplicationContext(),
                                               "Login successful!!",
                                               Toast.LENGTH_LONG)
                                    .show();
      
                                // hide the progress bar
                                progressBar.setVisibility(View.GONE);
      
                                // if sign-in is successful
                                // intent to home activity
                                Intent intent
                                    = new Intent(LoginActivity.this,
                                                 MainActivity.class);
                                startActivity(intent);
                            }
      
                            else {
      
                                // sign-in failed
                                Toast.makeText(getApplicationContext(),
                                               "Login failed!!",
                                               Toast.LENGTH_LONG)
                                    .show();
      
                                // hide the progress bar
                                progressbar.setVisibility(View.GONE);
                            }
                        }
                    });
        }
    }
  • Paso 7: activity_main.xml
    Esta es la actividad del tablero que contiene una vista de texto simple en el diseño relativo. El código es el siguiente:

    actividad_principal.xml

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        tools:context=".MainActivity">
          
        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="GeeksForGeeks(Firebase Authentication)"
                android:textSize="20dp"
               />
    </RelativeLayout>
  • Paso 8: MainActivity.java
    MainActivity contiene el código del panel al que se redirige al usuario después de iniciar sesión o registrarse.

    MainActivity.java

    package com.geeksforgeeks.firebaseuserauthentication;
      
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Toast;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Button;
      
    public class MainActivity extends AppCompatActivity {
      
        private TextView geeksforgeeks;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
      
            // initialising all views through id defined above
            geeksforgeeks = findViewById(R.id.gfg);
            geeksforgeeks.setText(
                "GeeksForGeeks(Firebase Authentication)");
        }
    }

Producción:

  • Registro de nuevo usuario

    Actividad de registro que contiene campo de correo electrónico y contraseña

  • Registro exitoso

    Actividad principal cuando el registro es exitoso

  • Los nuevos datos de usuario se almacenan en firebase con éxito. Puede ver los usuarios registrados en la consola Firebase de la aplicación después del paso Registro exitoso.
    Usuarios Registrados

    Usuarios Registrados

  • Usuario que intenta iniciar sesión con las credenciales recién registradas

    Actividad de inicio de sesión con campo de correo electrónico y contraseña

Publicación traducida automáticamente

Artículo escrito por Rishabh007 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 *