In this page we will demonstrate how firebase could be used for user registration and login activity.
First, design the page to facilitate both registration and login activity.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp">
<EditText
android:id="@+id/etEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email" />
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
<Button
android:id="@+id/btn_register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Register" />
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Login" />
</LinearLayout>
Add the dependencies in build.gradle file
implementation 'com.google.firebase:firebase-auth:22.1.1'
implementation 'com.google.firebase:firebase-firestore:24.9.1'
Main activity page code
package com.example.firebase_user_register_login_demo_2024;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
public class MainActivity extends AppCompatActivity {
private EditText etEmail, etPassword;
private Button btnRegister, btn_login;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth=FirebaseAuth.getInstance();
etEmail=findViewById(R.id.etEmail);
etPassword=findViewById(R.id.etPassword);
// FOLLOWING CODE IS FOR REGISTRATION OF THE USER
btnRegister= findViewById(R.id.btn_register);
btnRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String email, password;
email=String.valueOf(etEmail.getText().toString());
password=String.valueOf(etPassword.getText().toString());
if(TextUtils.isEmpty(email)){
Toast.makeText(MainActivity.this, "Enter Email", Toast.LENGTH_SHORT).show();
}
if(TextUtils.isEmpty(password)){
Toast.makeText(MainActivity.this, "Enter Password", Toast.LENGTH_SHORT).show();
}
mAuth.createUserWithEmailAndPassword(email,password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Toast.makeText(MainActivity.this, "Account Created", Toast.LENGTH_SHORT).show();
Intent in= new Intent(MainActivity.this, Registration.class);
startActivity(in);
finish();
}
else {
String errorMessage = task.getException().getMessage();
Toast.makeText(MainActivity.this, "Error: " + errorMessage, Toast.LENGTH_LONG).show();
//Toast.makeText(MainActivity.this, "Account creation failed", Toast.LENGTH_SHORT).show();
}
}
});
}
});
// FOLLOWING CODE IS FOR USER LOGIN
btn_login=findViewById(R.id.btn_login);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String email, password;
email=String.valueOf(etEmail.getText().toString());
password=String.valueOf(etPassword.getText().toString());
if(TextUtils.isEmpty(email)){
Toast.makeText(MainActivity.this, "Enter Email", Toast.LENGTH_SHORT).show();
}
if(TextUtils.isEmpty(password)){
Toast.makeText(MainActivity.this, "Enter Password", Toast.LENGTH_SHORT).show();
}
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_SHORT).show();
Intent in= new Intent(MainActivity.this, Login_Page.class);
startActivity(in);
finish();
} else {
Toast.makeText(MainActivity.this, "Authentication Failed", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}
Create a new page and design it
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".Login_Page">
<TextView
android:id="@+id/txt_login"
android:layout_width="297dp"
android:layout_height="104dp"
android:layout_marginStart="50dp"
android:layout_marginTop="61dp"
android:text="Login Successful"
android:textSize="34sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn_logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="141dp"
android:layout_marginTop="129dp"
android:text="Logout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txt_login" />
</androidx.constraintlayout.widget.ConstraintLayout>
Login page code
package com.example.firebase_user_register_login_demo_2024;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.firebase.Firebase;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class Login_Page extends AppCompatActivity {
private Button btn_logout;
private FirebaseAuth mAuth;
private TextView txt_msg;
FirebaseUser user;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_page);
mAuth = FirebaseAuth.getInstance();
user=mAuth.getCurrentUser();
txt_msg=findViewById(R.id.txt_login);
txt_msg.setText("Welcome " + user.getEmail());
btn_logout=findViewById(R.id.btn_logout);
btn_logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
Intent in=new Intent(Login_Page.this , MainActivity.class);
startActivity(in);
finish();
}
});
}
}
Create Registration page and code as shown below
package com.example.firebase_user_register_login_demo_2024;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class Registration extends AppCompatActivity {
private Button btn_home;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
btn_home=findViewById(R.id.btn_home);
btn_home.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent in=new Intent(Registration.this, MainActivity.class);
startActivity(in);
finish();
}
});
}
}