Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Otentikasi dengan Firebase Secara Anonim di Android

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat menggunakan Firebase Authentication untuk membuat dan menggunakan akun anonim sementara untuk mengautentikasi dengan Firebase. Akun anonim sementara ini dapat digunakan untuk memungkinkan pengguna yang belum mendaftar ke aplikasi Anda untuk bekerja dengan data yang dilindungi oleh aturan keamanan. Jika pengguna anonim memutuskan untuk mendaftar ke aplikasi Anda, Anda dapat menautkan kredensial masuk mereka ke akun anonim sehingga mereka dapat terus bekerja dengan data mereka yang dilindungi di sesi mendatang.

Sebelum kamu memulai

  1. Jika Anda belum melakukannya, tambahkan Firebase ke proyek Android Anda .
  2. Dalam file Gradle modul (tingkat aplikasi) Anda (biasanya <project>/<app-module>/build.gradle ), tambahkan dependensi untuk library Android Firebase Authentication. Sebaiknya gunakan Firebase Android BoM untuk mengontrol pembuatan versi library.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add 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 Firebase Android yang kompatibel.

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

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

    Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, yang memastikan bahwa semua versi kompatibel.

    dependencies {
        // Add 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.1.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add 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 Firebase Android yang kompatibel.

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

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

    Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, yang memastikan bahwa semua versi kompatibel.

    dependencies {
        // Add 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.1.0'
    }
    
  3. Jika Anda belum menghubungkan aplikasi ke proyek Firebase, lakukan dari Firebase console .
  4. Aktifkan otentikasi anonim:
    1. Di Firebase console , buka bagian Auth .
    2. Pada halaman Metode Masuk , aktifkan metode masuk Anonim .
    3. Opsional : Jika Anda telah mengupgrade proyek ke Firebase Authentication dengan Identity Platform , Anda dapat mengaktifkan pembersihan otomatis. Saat Anda mengaktifkan setelan ini, akun anonim yang lebih lama dari 30 hari akan dihapus secara otomatis. Dalam proyek dengan pembersihan otomatis yang diaktifkan, autentikasi anonim tidak akan lagi diperhitungkan dalam batas penggunaan atau kuota penagihan. Lihat Pembersihan otomatis .

Otentikasi dengan Firebase secara anonim

Saat pengguna yang logout menggunakan fitur aplikasi yang memerlukan autentikasi dengan Firebase, login pengguna secara anonim dengan menyelesaikan 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+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth
  2. Saat menginisialisasi Aktivitas Anda, periksa untuk melihat apakah pengguna saat ini masuk:

    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 masuk 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 sign-in berhasil, Anda dapat menggunakan metode getCurrentUser untuk mendapatkan data akun pengguna.

Ubah akun anonim menjadi akun permanen

Saat pengguna anonim mendaftar ke aplikasi Anda, Anda mungkin ingin mengizinkan mereka melanjutkan pekerjaannya dengan akun baru mereka—misalnya, Anda mungkin ingin membuat item yang ditambahkan pengguna ke keranjang belanja mereka sebelum mereka mendaftar tersedia di akun baru mereka. keranjang belanja akun. Untuk melakukannya, selesaikan langkah-langkah berikut:

  1. Saat pengguna mendaftar, selesaikan alur masuk untuk penyedia autentikasi pengguna hingga, tetapi tidak termasuk, memanggil salah satu metode FirebaseAuth.signInWith . Misalnya, dapatkan token ID Google pengguna, token akses Facebook, atau alamat email dan kata sandi.
  2. Dapatkan AuthCredential untuk penyedia otentikasi baru:

    Masuk dengan Google

    Java

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

    Kotlin+KTX

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

    Java

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

    Kotlin+KTX

    val credential = FacebookAuthProvider.getCredential(token.token)
    Masuk email-kata 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 masuk:

    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.

Pembersihan otomatis

Jika Anda telah meningkatkan versi proyek ke Firebase Authentication dengan Identity Platform , Anda dapat mengaktifkan pembersihan otomatis di Firebase console. Saat Anda mengaktifkan fitur ini, Anda mengizinkan, Firebase untuk secara otomatis menghapus akun anonim yang lebih lama dari 30 hari. Dalam proyek dengan pembersihan otomatis yang diaktifkan, autentikasi anonim tidak akan diperhitungkan dalam batas penggunaan atau kuota penagihan.

  • Setiap akun anonim yang dibuat setelah mengaktifkan pembersihan otomatis dapat dihapus secara otomatis kapan saja setelah 30 hari setelah pembuatan.
  • Akun anonim yang dibuat sebelum mengaktifkan pembersihan otomatis akan memenuhi syarat untuk penghapusan otomatis mulai 30 hari setelah mengaktifkan pembersihan otomatis.
  • Jika Anda mematikan pembersihan otomatis, semua akun anonim yang dijadwalkan untuk dihapus akan tetap dijadwalkan untuk dihapus. Akun ini tidak diperhitungkan dalam batas penggunaan atau kuota penagihan.
  • Jika Anda "meningkatkan" akun anonim dengan menautkannya ke metode masuk apa pun, akun tidak akan dihapus secara otomatis.

Jika Anda ingin melihat berapa banyak pengguna yang akan terpengaruh sebelum Anda mengaktifkan fitur ini, dan Anda telah mengupgrade proyek Anda ke Firebase Authentication dengan Identity Platform , Anda dapat memfilter menurut is_anon di Cloud Logging .

Langkah selanjutnya

Setelah pengguna dapat mengautentikasi dengan Firebase, Anda dapat mengontrol akses mereka ke data di database Firebase Anda menggunakan aturan Firebase .