Menggunakan App Check dengan penyedia debug di Android

Jika Anda telah mendaftarkan aplikasi untuk App Check lalu ingin menjalankan aplikasi di lingkungan yang biasanya tidak akan diklasifikasikan sebagai valid oleh App Check, seperti emulator selama pengembangan atau dari lingkungan continuous integration (CI), Anda dapat membuat build debug aplikasi yang menggunakan penyedia debug App Check, bukan penyedia pengesahan sungguhan.

Menggunakan penyedia debug di emulator

Untuk menggunakan penyedia debug saat menjalankan aplikasi di emulator secara interaktif (misalnya, selama pengembangan), lakukan hal berikut:

  1. Dalam file Gradle modul (level aplikasi), (biasanya <project>/<app-module>/build.gradle.kts atau <project>/<app-module>/build.gradle), tambahkan dependensi untuk library App Check untuk Android. Sebaiknya gunakan Firebase Android BoM untuk mengontrol pembuatan versi library.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
    
        // Add the dependencies for the App Check libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }
    

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

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

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

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

    dependencies {
        // Add the dependencies for the App Check libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:17.1.2")
    }
    
    Mencari modul library khusus Kotlin? Mulai Oktober 2023 (Firebase BoM 32.5.0), developer Kotlin dan Java dapat bergantung pada modul library utama (untuk mengetahui detailnya, lihat FAQ tentang inisiatif ini).

  2. Pada build debug, konfigurasikan App Check untuk menggunakan factory penyedia debug:

    Kotlin+KTX

    Firebase.initialize(context = this)
    Firebase.appCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Luncurkan aplikasi dan picu panggilan ke layanan backend Firebase. Token debug lokal akan dicatat dalam log saat SDK mencoba mengirim permintaan ke backend. Contoh:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. Di bagian App Check di Firebase console, pilih Manage debug tokens dari menu tambahan aplikasi. Lalu, daftarkan token debug yang Anda catat dalam log di langkah sebelumnya.

    Screenshot item menu Manage Debug Tokens

Setelah Anda mendaftarkan token, layanan backend Firebase akan menerimanya sebagai valid.

Karena token ini memungkinkan akses ke resource Firebase Anda tanpa perangkat yang valid, Anda harus menjaga kerahasiaannya. Jangan meng-commit token ke repositori publik, dan jika token yang terdaftar pernah terungkap kerahasiaannya, segera cabut token tersebut di Firebase console.

Menggunakan penyedia debug untuk pengujian unit di lingkungan CI

Agar dapat menggunakan penyedia debug untuk pengujian unit di lingkungan continuous integration (CI), lakukan hal berikut:

  1. Di bagian App Check di Firebase console, pilih Manage debug tokens dari menu tambahan aplikasi. Kemudian, buat token debug baru. Anda memerlukan token tersebut di langkah berikutnya.

    Karena token ini memungkinkan akses ke resource Firebase Anda tanpa perangkat yang valid, Anda harus menjaga kerahasiaannya. Jangan meng-commit token ke repositori publik, dan jika token yang terdaftar pernah terungkap kerahasiaannya, segera cabut token tersebut di Firebase console.

    Screenshot item menu Manage Debug Tokens

  2. Tambahkan token debug yang baru saja dibuat ke penyimpanan kunci yang aman di sistem CI Anda (misalnya, rahasia terenkripsi GitHub Action atau variabel terenkripsi Travis CI).

  3. Jika perlu, konfigurasikan sistem CI Anda untuk menyediakan token debug dalam lingkungan CI sebagai variabel lingkungan. Beri nama variabel, seperti APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. Dalam file Gradle modul (level aplikasi), (biasanya <project>/<app-module>/build.gradle.kts atau <project>/<app-module>/build.gradle), tambahkan dependensi untuk library App Check untuk Android. Sebaiknya gunakan Firebase Android BoM untuk mengontrol pembuatan versi library.

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }
    

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

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

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

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

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:17.1.2")
    }
    
    Mencari modul library khusus Kotlin? Mulai Oktober 2023 (Firebase BoM 32.5.0), developer Kotlin dan Java dapat bergantung pada modul library utama (untuk mengetahui detailnya, lihat FAQ tentang inisiatif ini).

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
    
        // Add the dependency for the App Check library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug")
    }
    

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

    (Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM

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

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

    dependencies {
        // Add the dependency for the App Check library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-appcheck-debug:17.1.2")
    }
    
    Mencari modul library khusus Kotlin? Mulai Oktober 2023 (Firebase BoM 32.5.0), developer Kotlin dan Java dapat bergantung pada modul library utama (untuk mengetahui detailnya, lihat FAQ tentang inisiatif ini).

  5. Tambahkan baris berikut ke konfigurasi varian build CI Anda:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. Di class pengujian, gunakan DebugAppCheckTestHelper untuk menggabungkan kode yang memerlukan token App Check:

    Kotlin+KTX

    @RunWith(AndroidJunit4::class)
    class MyTests {
        private val debugAppCheckTestHelper =
            DebugAppCheckTestHelper.fromInstrumentationArgs()
    
        @Test
        fun testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider {
                // Test code that requires a debug AppCheckToken.
            }
        }
    
        @Test
        fun testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                FirebaseApp.getInstance("nonDefaultApp")
            ) {
                // Test code that requires a debug AppCheckToken.
            }
        }
    }
    

    Java

    @RunWith(AndroidJunit4.class)
    public class YourTests {
        private final DebugAppCheckTestHelper debugAppCheckTestHelper =
                DebugAppCheckTestHelper.fromInstrumentationArgs();
    
        @Test
        public void testWithDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(() -> {
                // Test code that requires a debug AppCheckToken.
            });
        }
    
        @Test
        public void testWithNonDefaultApp() {
            debugAppCheckTestHelper.withDebugProvider(
                    FirebaseApp.getInstance("nonDefaultApp"),
                    () -> {
                        // Test code that requires a debug AppCheckToken.
                    });
        }
    }
    

Saat aplikasi Anda berjalan di lingkungan CI, layanan backend Firebase akan menerima token yang dikirimkan aplikasi sebagai valid.