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):
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' }
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());
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
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.
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:
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.
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).
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
.In Ihrer Modul-Gradle-Datei (auf App-Ebene) (normalerweise
app/build.gradle
):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' }
Fügen Sie der Konfiguration Ihrer CI-Build-Variante Folgendes hinzu:
testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
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.