Catch up on highlights from Firebase at Google I/O 2023. Learn more

Verwenden Sie App Check mit dem Debug-Anbieter auf Android

Wenn Sie Ihre App nach der Registrierung für App Check in einer Umgebung ausführen möchten, die App Check normalerweise nicht als gültig einstufen würde, z Erstellen Sie einen Debug-Build Ihrer App, der den App Check-Debug-Anbieter anstelle eines echten Nachweisanbieters verwendet.

Verwenden Sie den Debug-Anbieter in einem Emulator

Gehen Sie wie folgt vor, um den Debug-Anbieter zu verwenden, während Sie Ihre App interaktiv in einem Emulator ausführen (z. B. während der Entwicklung):

  1. Deklarieren Sie in Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise app/build.gradle ) die Abhängigkeit für die App Check Android-Bibliothek:

    Kotlin+KTX

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

    Java

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:17.0.1'
    }
    
  2. Konfigurieren Sie App Check in Ihrem Debug-Build so, dass die Debug-Provider-Factory verwendet wird:

    Kotlin+KTX

    Firebase.initialize(context = this)
    val firebaseAppCheck = FirebaseAppCheck.getInstance()
    firebaseAppCheck.installAppCheckProviderFactory(
        DebugAppCheckProviderFactory.getInstance(),
    )

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Starten Sie die App und lösen Sie einen Aufruf an einen Firebase-Back-End-Dienst aus. Ein lokales Debug-Token wird protokolliert, wenn das SDK versucht, eine Anfrage an das Back-End zu senden. Zum Beispiel:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. Wählen Sie im Abschnitt „App-Prüfung“ der Firebase-Konsole im Überlaufmenü Ihrer App Debug-Token verwalten aus. Registrieren Sie dann das Debug-Token, das Sie im vorherigen Schritt angemeldet haben.

    Screenshot des Menüelements Manage Debug Tokens

Nachdem Sie das Token registriert haben, akzeptieren die Firebase-Back-End-Dienste es als gültig.

Da dieses Token den Zugriff auf Ihre Firebase-Ressourcen ohne ein gültiges Gerät ermöglicht, ist es wichtig, dass Sie es privat halten. Übertragen Sie es nicht in ein öffentliches Repository, und wenn ein registriertes Token jemals kompromittiert wird, widerrufen Sie es sofort in der Firebase-Konsole.

Verwenden Sie den Debug-Anbieter für Komponententests in einer CI-Umgebung

Gehen Sie wie folgt vor, um den Debug-Anbieter für Komponententests in einer Umgebung mit kontinuierlicher Integration (CI) zu verwenden:

  1. Wählen Sie im Abschnitt „App-Prüfung“ der Firebase-Konsole im Überlaufmenü Ihrer App Debug-Token verwalten aus. Erstellen Sie dann ein neues Debug-Token. Sie benötigen das Token im nächsten Schritt.

    Da dieses Token den Zugriff auf Ihre Firebase-Ressourcen ohne ein gültiges Gerät ermöglicht, ist es wichtig, dass Sie es privat halten. Übertragen Sie es nicht in ein öffentliches Repository, und wenn ein registriertes Token jemals kompromittiert wird, widerrufen Sie es sofort in der Firebase-Konsole.

    Screenshot des Menüelements Manage Debug Tokens

  2. Fügen Sie das soeben erstellte Debug-Token dem sicheren Schlüsselspeicher Ihres CI-Systems hinzu (z. B. die verschlüsselten Geheimnisse von GitHub Actions oder die verschlüsselten Variablen von Travis CI).

  3. Konfigurieren Sie ggf. Ihr CI-System so, dass Ihr Debug-Token in der CI-Umgebung als Umgebungsvariable verfügbar ist. Benennen Sie die Variable etwa so wie APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. In Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise app/build.gradle ):

    1. Deklarieren Sie die Testabhängigkeit für die App Check Android-Debug-Bibliothek:

      Kotlin+KTX

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

      Java

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:17.0.1'
      }
      
    2. Fügen Sie der Konfiguration Ihrer CI-Build-Variante Folgendes hinzu:

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. Verwenden Sie in Ihren Testklassen den DebugAppCheckTestHelper , um jeden Code zu umschließen, der ein App-Check-Token benötigt:

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

Wenn Ihre App in einer CI-Umgebung ausgeführt wird, akzeptieren die Firebase-Back-End-Dienste das gesendete Token als gültig.