Buka konsol

Melakukan Autentikasi dengan Firebase secara Anonim di Android

Anda dapat menggunakan Firebase Authentication untuk membuat dan menggunakan akun anonim sementara untuk melakukan autentikasi dengan Firebase. Dengan akun anonim sementara ini, pengguna yang belum mendaftar ke aplikasi Anda dapat bekerja dengan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, tautkan kredensial login mereka ke akun anonim agar mereka dapat terus menangani data yang dilindungi pada sesi-sesi selanjutnya.

Sebelum memulai

  1. Tambahkan Firebase ke project Android jika Anda belum melakukannya.
  2. Dalam file build.gradle level project, pastikan Anda memasukkan repositori Maven Google di bagian buildscript dan allprojects.
  3. Tambahkan dependensi untuk library Android Firebase Authentication ke file Gradle modul (level aplikasi) Anda (biasanya berupa app/build.gradle):
    implementation 'com.google.firebase:firebase-auth:19.1.0'
  4. Jika Anda belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  5. Aktifkan autentikasi anonim:
    1. Di Firebase console, buka bagian Auth.
    2. Di halaman Metode Login, aktifkan metode login Anonim.

Melakukan autentikasi dengan Firebase secara anonim

Ketika pengguna yang logout menggunakan fitur aplikasi yang mengharuskan autentikasi dengan Firebase, login-kan pengguna tersebut secara anonim dengan mengikuti langkah-langkah berikut:

  1. Dalam metode onCreate aktivitas Anda, dapatkan instance bersama dari objek FirebaseAuth:

    Java

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

    Kotlin

    private lateinit var auth: FirebaseAuth// ...
    // Initialize Firebase Auth
    auth = FirebaseAuth.getInstance()
  2. Saat menginisialisasi Aktivitas Anda, periksa apakah pengguna saat ini sudah login atau belum:

    Java

    @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

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }
  3. Terakhir, panggil signInAnonymously untuk login sebagai pengguna anonim:

    Java

    mAuth.signInAnonymously()
            .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, "signInAnonymously:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        updateUI(user);
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInAnonymously:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
    
                    // ...
                }
            });

    Kotlin

    auth.signInAnonymously()
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInAnonymously:success")
                    val user = auth.currentUser
                    updateUI(user)
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInAnonymously:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
    
                // ...
            }
    Jika login berhasil, Anda dapat menggunakan metode getCurrentUser untuk mendapatkan data akun pengguna.

Mengubah akun anonim menjadi akun permanen

Ketika pengguna anonim mendaftar ke aplikasi, Anda dapat mengizinkan mereka melanjutkan apa yang mereka lakukan sebelum akun baru dibuat—misalnya, Anda dapat membuat item, yang mereka tambahkan ke keranjang belanja sebelum mendaftar, tetap tersedia di keranjang belanja akun baru mereka. Caranya, ikuti langkah-langkah berikut:

  1. Ketika pengguna mendaftar, lengkapi alur login untuk penyedia autentikasi pengguna tersebut hingga, namun tidak termasuk, tahap pemanggilan salah satu metode FirebaseAuth.signInWith. Misalnya, mendapatkan token ID Google, token akses Facebook, atau alamat email dan sandi pengguna tersebut.
  2. Dapatkan AuthCredential untuk penyedia autentikasi baru:

    Login dengan Google

    Java

    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);

    Kotlin

    val credential = GoogleAuthProvider.getCredential(googleIdToken, null)
    Login dengan Facebook

    Java

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());

    Kotlin

    val credential = FacebookAuthProvider.getCredential(token.token)
    Login dengan email-sandi

    Java

    AuthCredential credential = EmailAuthProvider.getCredential(email, password);

    Kotlin

    val credential = EmailAuthProvider.getCredential(email, password)
  3. Teruskan objek AuthCredential ke metode linkWithCredential pengguna yang login:

    Java

    mAuth.getCurrentUser().linkWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "linkWithCredential:success");
                        FirebaseUser user = task.getResult().getUser();
                        updateUI(user);
                    } else {
                        Log.w(TAG, "linkWithCredential:failure", task.getException());
                        Toast.makeText(AnonymousAuthActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        updateUI(null);
                    }
    
                    // ...
                }
            });

    Kotlin

    auth.currentUser?.linkWithCredential(credential)
            ?.addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "linkWithCredential:success")
                    val user = task.result?.user
                    updateUI(user)
                } else {
                    Log.w(TAG, "linkWithCredential:failure", task.exception)
                    Toast.makeText(baseContext, "Authentication failed.",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
    
                // ...
            }

Jika panggilan ke linkWithCredential berhasil, akun baru pengguna dapat mengakses data Firebase akun anonim.

Langkah berikutnya

Setelah pengguna dapat melakukan autentikasi dengan Firebase, Anda dapat mengontrol aksesnya ke database Firebase menggunakan aturan Firebase.