Catch up on everthing we announced at this year's Firebase Summit. Learn more

Use App Check con el proveedor de depuración en Android

Si, después de haber registrado su aplicación para App Check, desea ejecutarla en un entorno que App Check normalmente no clasificaría como válido, como un emulador durante el desarrollo o desde un entorno de integración continua (CI), puede cree una compilación de depuración de su aplicación que utilice el proveedor de depuración de App Check en lugar de un proveedor de certificación real.

Usar el proveedor de depuración en un emulador

Para usar el proveedor de depuración mientras ejecuta su aplicación en un emulador de forma interactiva (durante el desarrollo, por ejemplo), haga lo siguiente:

  1. En su módulo (nivel de aplicación) Gradle archivo (normalmente app/build.gradle ), declarar la dependencia para la App de verificación Biblioteca de Android:

    Java

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

    Kotlin + KTX

    dependencies {
        implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta03'
    }
    
  2. En su compilación de depuración, configure App Check para usar la fábrica de proveedores de depuración:

    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. Inicie la aplicación y active una llamada a un servicio de backend de Firebase. Se registrará un token de depuración local cuando el SDK intente enviar una solicitud al backend. Por ejemplo:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. En los Ajustes del proyecto> Aplicación Comprobar la sección de la consola Firebase, seleccione Administrar fichas de depuración en el menú de desbordamiento de su aplicación. Luego, registre el token de depuración que inició sesión en el paso anterior.

    Captura de pantalla del elemento de menú Administrar tokens de depuración

Después de registrar el token, los servicios de backend de Firebase lo aceptarán como válido.

Debido a que este token permite el acceso a sus recursos de Firebase sin un dispositivo válido, es crucial que lo mantenga privado. No lo envíes a un repositorio público, y si alguna vez un token registrado se ve comprometido, revocalo inmediatamente en Firebase console.

Utilice el proveedor de depuración para pruebas unitarias en un entorno de CI

Para utilizar el proveedor de depuración para pruebas unitarias en un entorno de integración continua (CI), haga lo siguiente:

  1. En los Ajustes del proyecto> Aplicación Comprobar la sección de la consola Firebase, seleccione Administrar fichas de depuración en el menú de desbordamiento de su aplicación. Luego, cree un nuevo token de depuración. Necesitará el token en el siguiente paso.

    Debido a que este token permite el acceso a sus recursos de Firebase sin un dispositivo válido, es crucial que lo mantenga privado. No lo envíes a un repositorio público, y si alguna vez un token registrado se ve comprometido, revocalo inmediatamente en Firebase console.

    Captura de pantalla del elemento de menú Administrar tokens de depuración

  2. Añadir el símbolo de depuración que acaba de crear al almacén de claves seguro de su sistema de CI (por ejemplo, GitHub las acciones de los secretos cifrados o de Travis CI variables de cifrado ).

  3. Si es necesario, configure su sistema de CI para que su token de depuración esté disponible dentro del entorno de CI como una variable de entorno. Nombrar la variable algo así como APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. En su módulo (nivel de aplicación) Gradle archivo (normalmente app/build.gradle ):

    1. Declare la dependencia de prueba para la biblioteca de depuración de Android App Check:

      Java

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

      Kotlin + KTX

      dependencies {
          androidTestImplementation 'com.google.firebase:firebase-appcheck-debug-testing:16.0.0-beta03'
      }
      
    2. Agregue lo siguiente a la configuración de su variante de compilación de CI:

      testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
      
  5. En sus clases de prueba, utilice el DebugAppCheckTestHelper para envolver cualquier código que necesita una aplicación Compruebe token:

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

Cuando su aplicación se ejecuta en un entorno de CI, los servicios de backend de Firebase aceptarán el token que envía como válido.