Utilizzare App Check con il provider di debug su Android

Una volta applicata App Check a un servizio di backend, le funzionalità dell'app che dipendono da quel servizio di backend non verranno eseguite in un emulatore o da un ambiente di integrazione continua (CI) perché questi ambienti non sono considerati dispositivi validi. Per eseguire l'app in questi ambienti durante lo sviluppo e il test, devi creare una build di debug dell'app che utilizzi il App Check provider di debug anziché un provider di attestazione di produzione.

Utilizzare il provider di debug in un emulatore

Ecco come utilizzare il provider di debug durante l'esecuzione dell'app in un emulatore in modo interattivo (ad esempio, durante lo sviluppo locale):

  1. Nel file Gradle (a livello di app) del modulo (di solito <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi la dipendenza per la libreria App Check per Android. Ti consigliamo di utilizzare Firebase Android BoM per controllare il controllo delle versioni della libreria.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.19.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")
    }

    Utilizzando la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

    (Alternativa)  Aggiungi le dipendenze della libreria Firebase senza utilizzare BoM

    Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella riga della dipendenza.

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la BoM per gestire le versioni delle librerie, il che garantisce la compatibilità di tutte le versioni.

    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:19.4.1")
    }

  2. Nella build di debug, configura App Check in modo da utilizzare la fabbrica del provider di debug:

    Kotlin

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

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Ottieni il token di debug:

    1. Esegui l'app nell'emulatore o sul dispositivo di test.

    2. Cerca il token di debug App Check nei log. Ad esempio:

      D DebugAppCheckProvider: Enter this debug secret into the allow list
      in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
      
    3. Copia il token (ad esempio, 123a4567-b89c-12d3-e456-789012345678).

  4. Registra il token di debug con App Check:

    1. Nella console Firebase, vai alla scheda Sicurezza > App Check > App.

    2. Trova la tua app, fai clic sul menu extra con tre puntini () e poi seleziona Gestisci token di debug.

    3. Segui le istruzioni sullo schermo per registrare il token di debug.

    Screenshot della voce di menu Gestisci token di debug nella console Firebase

Dopo aver registrato il token con App Check, i tuoi servizi di backend lo accetteranno come valido.

Questo token consente l'accesso ai tuoi servizi di backend senza un dispositivo valido, quindi è fondamentale che tu lo mantenga privato. Non eseguirne il commit in un repository pubblico o distribuirlo nelle build di produzione della tua app. Se un token registrato viene compromesso, eliminalo immediatamente utilizzando Gestisci token di debug nella console Firebase.

Utilizzare il provider di debug per i test delle unità in un ambiente CI

Ecco come utilizzare il provider di debug per i test delle unità in un ambiente di integrazione continua (CI):

  1. Nella console Firebase, crea un token di debug:

    1. Nella console Firebase, vai alla scheda Sicurezza > App Check > App.

    2. Trova la tua app, fai clic sul menu extra con tre puntini () e poi seleziona Gestisci token di debug.

    3. Segui le istruzioni sullo schermo per creare un nuovo token di debug.

    Questo token consente l'accesso ai tuoi servizi di backend senza un dispositivo valido, quindi è fondamentale che tu lo mantenga privato. Non eseguirne il commit in un repository pubblico o distribuirlo nelle build di produzione della tua app. Se un token registrato viene compromesso, eliminalo immediatamente utilizzando Gestisci token di debug nella console Firebase.

    Screenshot della voce di menu Gestisci token di debug

  2. Aggiungi il token di debug che hai appena creato all'archivio chiavi sicuro del tuo sistema di integrazione continua (ad esempio, i segreti criptati di GitHub Actions o le variabili criptate di Travis CI).

  3. Se necessario, configura il sistema di integrazione continua per rendere disponibile il token di debug nell'ambiente di integrazione continua come variabile di ambiente. Assegna alla variabile un nome come APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. Nel file Gradle (a livello di app) del modulo (di solito <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), aggiungi la dipendenza per la libreria App Check per Android. Ti consigliamo di utilizzare Firebase Android BoM per controllare il controllo delle versioni della libreria.

    Kotlin

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.19.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")
    }

    Utilizzando la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

    (Alternativa)  Aggiungi le dipendenze della libreria Firebase senza utilizzare BoM

    Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella riga della dipendenza.

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la BoM per gestire le versioni delle librerie, il che garantisce la compatibilità di tutte le versioni.

    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:19.4.1")
    }

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.19.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")
    }

    Utilizzando la Firebase Android BoM, la tua app utilizzerà sempre versioni compatibili delle librerie Firebase Android.

    (Alternativa)  Aggiungi le dipendenze della libreria Firebase senza utilizzare BoM

    Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella riga della dipendenza.

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la BoM per gestire le versioni delle librerie, il che garantisce la compatibilità di tutte le versioni.

    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:19.4.1")
    }

  5. Aggiungi quanto segue alla configurazione della variante di compilazione CI:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. Nelle classi di test, utilizza DebugAppCheckTestHelper per racchiudere qualsiasi codice che richiede un token App Check:

    Kotlin

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

Quando la tua app viene eseguita in un ambiente CI, i tuoi servizi di backend accettano il token che invia come valido.