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, hubungkan 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 Anda.
  2. Tambahkan dependensi untuk Firebase Authentication ke file build.gradle tingkat aplikasi Anda:
    implementation 'com.google.firebase:firebase-auth:16.0.3'
  3. Jika Anda 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 menggunakan fitur aplikasi yang mengharuskan autentikasi dengan Firebase, buat agar pengguna tersebut login secara anonim dengan mengikuti langkah-langkah berikut:

  1. Dalam metode onCreate aktivitas Anda, dapatkan instance bersama dari objek FirebaseAuth:
    private FirebaseAuth mAuth;
    // ...
    mAuth = FirebaseAuth.getInstance();
    
  2. Saat menginisialisasi Aktivitas Anda, periksa apakah pengguna saat ini sedang login:
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }
    
  3. Terakhir, panggil signInAnonymously untuk login sebagai pengguna anonim:
    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);
                    }
    
                    // ...
                }
            });
    
    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 untuk terus bekerja menggunakan akun barunya—misalnya, Anda dapat membuat item, yang mereka tambahkan ke keranjang belanja sebelum mendaftar, tetap tersedia di keranjang belanja akun barunya. Caranya, ikuti langkah-langkah berikut:

  1. Ketika pengguna mendaftar, ikuti alur login untuk penyedia autentikasi pengguna hingga, tetapi tidak termasuk, memanggil 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 yang baru:

    Login dengan Google
    AuthCredential credential = GoogleAuthProvider.getCredential(googleIdToken, null);
    
    Login dengan Facebook
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    
    Login dengan email-sandi
    AuthCredential credential = EmailAuthProvider.getCredential(email, password);
    
  3. Berikan objek AuthCredential ke pengguna yang login menggunakan metode linkWithCredential pengguna:

    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);
                    }
    
                    // ...
                }
            });
    

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

Langkah berikutnya

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

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.