Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Utiliser App Check avec le fournisseur de débogage sur Android

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Si, après avoir enregistré votre application pour App Check, vous souhaitez exécuter votre application dans un environnement qu'App Check ne classerait normalement pas comme valide, tel qu'un émulateur pendant le développement ou à partir d'un environnement d'intégration continue (CI), vous pouvez créez une version de débogage de votre application qui utilise le fournisseur de débogage App Check au lieu d'un véritable fournisseur d'attestation.

Utiliser le fournisseur de débogage dans un émulateur

Pour utiliser le fournisseur de débogage lors de l'exécution interactive de votre application dans un émulateur (pendant le développement, par exemple), procédez comme suit :

  1. Dans le fichier Gradle de votre module (au niveau de l'application) (généralement app/build.gradle ), déclarez la dépendance pour la bibliothèque App Check Android :

    Java

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.1.0'
    }
    

    Kotlin+KTX

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.1.0'
    }
    
  2. Dans votre version de débogage, configurez App Check pour utiliser la fabrique de fournisseurs de débogage :

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());

    Kotlin+KTX

    FirebaseApp.initializeApp(/*context=*/this)
    val firebaseAppCheck = FirebaseAppCheck.getInstance()
    firebaseAppCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance()
    )
  3. Lancez l'application et déclenchez un appel vers un service backend Firebase. Un jeton de débogage local sera enregistré lorsque le SDK essaiera d'envoyer une requête au backend. Par exemple:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. Dans la section App Check de la console Firebase, choisissez Gérer les jetons de débogage dans le menu de débordement de votre application. Ensuite, enregistrez le jeton de débogage que vous avez connecté à l'étape précédente.

    Capture d'écran de l'élément de menu Gérer les jetons de débogage

Après avoir enregistré le jeton, les services backend Firebase l'accepteront comme valide.

Étant donné que ce jeton permet d'accéder à vos ressources Firebase sans appareil valide, il est essentiel que vous le gardiez privé. Ne le validez pas dans un référentiel public et si un jeton enregistré est compromis, révoquez-le immédiatement dans la console Firebase.

Utiliser le fournisseur de débogage pour les tests unitaires dans un environnement CI

Pour utiliser le fournisseur de débogage pour les tests unitaires dans un environnement d'intégration continue (CI), procédez comme suit :

  1. Dans la section App Check de la console Firebase, choisissez Gérer les jetons de débogage dans le menu de débordement de votre application. Ensuite, créez un nouveau jeton de débogage. Vous aurez besoin du jeton à l'étape suivante.

    Étant donné que ce jeton permet d'accéder à vos ressources Firebase sans appareil valide, il est essentiel que vous le gardiez privé. Ne le validez pas dans un référentiel public et si un jeton enregistré est compromis, révoquez-le immédiatement dans la console Firebase.

    Capture d'écran de l'élément de menu Gérer les jetons de débogage

  2. Ajoutez le jeton de débogage que vous venez de créer au magasin de clés sécurisé de votre système CI (par exemple, les secrets chiffrés de GitHub Actions ou les variables chiffrées de Travis CI).

  3. Si nécessaire, configurez votre système CI pour rendre votre jeton de débogage disponible dans l'environnement CI en tant que variable d'environnement. Nommez la variable quelque chose comme APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. Dans le fichier Gradle de votre module (au niveau de l'application) (généralement app/build.gradle ):

    1. Déclarez la dépendance de test pour la bibliothèque de débogage Android d'App Check :

      Java

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.1.0'
      }
      

      Kotlin+KTX

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.1.0'
      }
      
    2. Ajoutez les éléments suivants à la configuration de votre variante de build CI :

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. Dans vos classes de test, utilisez DebugAppCheckTestHelper pour encapsuler tout code nécessitant un jeton App Check :

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

    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.
            }
        }
    }
    

Lorsque votre application s'exécute dans un environnement CI, les services de backend Firebase acceptent le jeton qu'il envoie comme valide.