Cara Mengganti Alamat Email dengan Firebase Authentication


Assalamualaikum Warahmatullahi Wabarakatuh.

Pada tutorial ini kita akan belajar bagaimana cara membuat sebuah sistem untuk mengganti alamat email user pada Firebase Authentication. Pada postingan sebelumnya saya sudah membahas beberapa materi mengenai Firebase Autentikasi menggunakan Email dan Kata Sandi, kalian bisa cek linknya dibawah ini.


Sebelum kalian memulai tutorial ini, saya sarankan kalian untuk mengikuti tutorial yang saya berikan sebelumnya, mengenai autentikasi menggunakan alamat email dan kata sandi. Karena project yang akan kita buat merupakan lanjutan dari tutorial sebelumnya.

Materi yang perlu kalian pelajari sebelumnya:
  1. Cara Melakukan Sign Up dengan Email dan Sandi pada Firebase Authentication
  2. Membuat Halaman Login dengan Email dan Sandi pada Firebase Authentication
  3. Cara Mengganti Kata Sandi Email dengan Firebase Authentication

Untuk membuat sistem update email, caranya cukup mudah, kita hanya perlu menggunakan fungsi updateEmail() dari Firebase Authentication, dengan memasukan alamat email baru pada fungsi tersebut, maka user dapat menggunakan email tersebut untuk login.

Cara Mengganti Alamat Email dengan Firebase Authentication

1) Pertama kita akan membuat activity baru bernama ChangeEmailActivity, activity ini digunakan sebagai halaman untuk menupdate email dari user yang telah terautentikasi.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="cianjur.developer.net.firebaseexample.ChangeEmailActivity">

    <ImageView
        android:id="@+id/logo"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_marginTop="32dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.07999998"
        app:srcCompat="@drawable/firebase_auth"
        tools:ignore="ContentDescription" />

    <android.support.design.widget.TextInputLayout
        android:id="@+id/emailForm"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/logo">

        <android.support.design.widget.TextInputEditText
            android:id="@+id/changeEmail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Email Baru"
            tools:ignore="HardcodedText" />
    </android.support.design.widget.TextInputLayout>

    <Button
        android:id="@+id/change"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="32dp"
        android:layout_marginStart="32dp"
        android:layout_marginTop="8dp"
        android:text="Ubah Email"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/emailForm"
        tools:ignore="HardcodedText" />

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/change"
        app:layout_constraintVertical_bias="0.13999999"
        tools:visibility="visible" />

</android.support.constraint.ConstraintLayout>
View:


2) Selanjutnya buka class ChangeEmailActivity.java kalian, disini kita akan menggunakan fungsi updateEmail() untuk mengganti email lama dengan yang baru.
package cianjur.developer.net.firebaseexample;

import android.support.annotation.NonNull;
import android.support.design.widget.TextInputEditText;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class ChangeEmailActivity extends AppCompatActivity {

    //Deklarasi Variable
    private TextInputEditText myEmail;
    private Button ChangeButtton;
    private ProgressBar progressBar;
    private FirebaseUser user;
    private String getEmail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_change_email);

        //Inisialisasi Widget dan Membuat Objek dari FirebaeUser
        myEmail = findViewById(R.id.changeEmail);
        ChangeButtton = findViewById(R.id.change);
        progressBar = findViewById(R.id.progressBar);
        progressBar.setVisibility(View.GONE);
        user = FirebaseAuth.getInstance().getCurrentUser();

        ChangeButtton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressBar.setVisibility(View.VISIBLE);
                getEmail = myEmail.getText().toString().trim();

                //Melakukan Proses Update, dengan memasukan email beru
                user.updateEmail(getEmail)
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {

                                //Mengecek status keberhasilan saat proses update Password
                                if(task.isSuccessful()){
                                    Toast.makeText(ChangeEmailActivity.this, "Email Berhasil Diubah", Toast.LENGTH_SHORT).show();
                                    FirebaseAuth.getInstance().signOut();
                                    finish();
                                }else {
                                    Toast.makeText(ChangeEmailActivity.this, "Terjadi Kesalahan, Silakan Coba Lagi", Toast.LENGTH_SHORT).show();
                                    progressBar.setVisibility(View.GONE);
                                }
                            }
                        });
            }
        });
    }
}
Demo:




Setelah kita membuat sistem untuk mengubah alamat email, beriktunya kita akan belajar cara mereset ulang kata sandi menggunakan alamat email, tutorialnya dapat kalian lihat disini.

Terimakasih atas kunjungannya, semoga tutorial yang saya berikan bisa bermanfaat untuk kalian semua, selebihnya, mohon maaf bila ada kesalahan.

Wassalamualaikum Warahmatullahi Wabarakatuh.

Wildan M Athoillah
Wildan M Athoillah Blogger dan spesialis pembuat aplikasi android.