Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

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 menggunakan 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 menggunakan data yang dilindungi pada sesi-sesi selanjutnya.

Sebelum memulai

  1. Tambahkan Firebase ke project Android jika Anda belum melakukannya.
  2. Dengan Firebase Android BoM, deklarasikan dependensi untuk library Android Firebase Authentication dalam file Gradle modul (level aplikasi), biasanya app/build.gradle.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth'
    }
    

    Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.

    (Alternatif) Deklarasikan dependensi library Firebase tanpa menggunakan BoM

    Jika memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi library Firebase di baris dependensinya.

    Perhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi Anda, sebaiknya gunakan BoM untuk mengelola versi library, yang memastikan bahwa semua versi kompatibel.

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth:21.0.1'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // Declare the dependency for the Firebase Authentication library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx'
    }
    

    Dengan menggunakan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.

    (Alternatif) Deklarasikan dependensi library Firebase tanpa menggunakan BoM

    Jika memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi library Firebase di baris dependensinya.

    Perhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi Anda, sebaiknya gunakan BoM untuk mengelola versi library, yang memastikan bahwa semua versi kompatibel.

    dependencies {
        // Declare the dependency for the Firebase Authentication library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
    }
    
  3. Jika belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  4. 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 tidak login ingin menggunakan fitur aplikasi yang mengharuskan autentikasi dengan Firebase, proses login pengguna secara anonim dengan mengikuti langkah-langkah berikut:

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

    Java

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

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Saat menginisialisasi Aktivitas Anda, periksa apakah pengguna 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+KTX

    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+KTX

    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 memungkinkan mereka melanjutkan aktivitas dengan akun yang baru dibuat. Misalnya, Anda dapat mempertahankan item yang ditambahkan pengguna sebelum mendaftar agar tetap berada di keranjang belanja pada akun baru mereka. Caranya, ikuti langkah-langkah berikut:

  1. Ketika pengguna mendaftar, selesaikan alur login untuk penyedia autentikasi pengguna tersebut hingga, tetapi sebelum, memanggil salah satu metode FirebaseAuth.signInWith. Misalnya, dapatkan 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+KTX

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

    Java

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

    Kotlin+KTX

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

    Java

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

    Kotlin+KTX

    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+KTX

    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 akses mereka ke data di database Firebase Anda menggunakan aturan Firebase.