Usa la Verificación de aplicaciones mediante el proveedor de depuración en Android

Si, después de registrar la app en App Check, quieres ejecutarla en un entorno que App Check no suele clasificar como válido, como un emulador durante el desarrollo o desde un entorno de integración continua (CI), puedes crear una compilación de depuración de la app que use el proveedor de depuración de App Check, en lugar de un proveedor de certificación real.

Usa el proveedor de depuración en un emulador

Para usar el proveedor de depuración mientras ejecutas la app en un emulador de manera interactiva (por ejemplo, durante el desarrollo), sigue estos pasos:

  1. En el archivo Gradle del módulo (nivel de la app) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), agrega la dependencia de la biblioteca de App Check para Android. Te recomendamos usar Firebase Android BoM para controlar las versiones de las bibliotecas.

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

    Cuando usas Firebase Android BoM, tu app siempre usará versiones compatibles de las bibliotecas de Firebase para Android.

    (Alternativa)  Agrega dependencias de la biblioteca de Firebase sin usar la BoM

    Si eliges no usar la Firebase BoM, debes especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Ten en cuenta que, si usas múltiples bibliotecas de Firebase en tu app, es muy recomendable que uses la BoM para administrar las versiones de las bibliotecas para garantizar que todas las versiones sean compatibles.

    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:18.0.0")
    }
    ¿Buscas un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0), tanto los desarrolladores de Kotlin como los de Java pueden depender del módulo de la biblioteca principal (para obtener más información, consulta las Preguntas frecuentes sobre esta iniciativa).

  2. En la compilación de depuración, configura App Check para que use la fábrica de proveedores de depuración:

    Kotlin+KTX

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

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Inicia la app y activa 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 la sección App Check de Firebase console, elige Administrar tokens de depuración en el menú ampliado de la app. Luego, registra el token de depuración que ingresaste en el paso anterior.

    Captura de pantalla del elemento del menú Administrar tokens de depuración (Manage debug tokens)

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 tus recursos de Firebase sin un dispositivo válido, es fundamental que sea privado. No lo confirmes en un repositorio público y, si un token registrado se ve comprometido, revócalo de inmediato en Firebase console.

Usa el proveedor de depuración para pruebas de unidades en un entorno de CI

Si deseas usar el proveedor de depuración para pruebas de unidades en un entorno de integración continua (CI), sigue estos pasos:

  1. En la sección App Check de Firebase console, elige Administrar tokens de depuración en el menú ampliado de la app. Luego, crea un token de depuración nuevo. Lo necesitarás en el siguiente paso.

    Debido a que este token permite el acceso a tus recursos de Firebase sin un dispositivo válido, es fundamental que sea privado. No lo confirmes en un repositorio público y, si un token registrado se ve comprometido, revócalo de inmediato en Firebase console.

    Captura de pantalla del elemento del menú Administrar tokens de depuración (Manage debug tokens)

  2. Agrega el token de depuración que acabas de crear al almacén de claves seguro del sistema de CI (por ejemplo, los secretos encriptados de GitHub Actions o las variables encriptadas de Travis CI).

  3. Si es necesario, configura el sistema de CI a fin de que el token de depuración esté disponible dentro del entorno de CI como una variable de entorno. Asigna un nombre a la variable, como APP_CHECK_DEBUG_TOKEN_FROM_CI.

  4. En el archivo Gradle del módulo (nivel de la app) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle), agrega la dependencia de la biblioteca de App Check para Android. Te recomendamos usar Firebase Android BoM para controlar las versiones de las bibliotecas.

    Kotlin+KTX

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

    Cuando usas Firebase Android BoM, tu app siempre usará versiones compatibles de las bibliotecas de Firebase para Android.

    (Alternativa)  Agrega dependencias de la biblioteca de Firebase sin usar la BoM

    Si eliges no usar la Firebase BoM, debes especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Ten en cuenta que, si usas múltiples bibliotecas de Firebase en tu app, es muy recomendable que uses la BoM para administrar las versiones de las bibliotecas para garantizar que todas las versiones sean compatibles.

    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:18.0.0")
    }
    ¿Buscas un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0), tanto los desarrolladores de Kotlin como los de Java pueden depender del módulo de la biblioteca principal (para obtener más información, consulta las Preguntas frecuentes sobre esta iniciativa).

    Java

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

    Cuando usas Firebase Android BoM, tu app siempre usará versiones compatibles de las bibliotecas de Firebase para Android.

    (Alternativa)  Agrega dependencias de la biblioteca de Firebase sin usar la BoM

    Si eliges no usar la Firebase BoM, debes especificar cada versión de la biblioteca de Firebase en su línea de dependencia.

    Ten en cuenta que, si usas múltiples bibliotecas de Firebase en tu app, es muy recomendable que uses la BoM para administrar las versiones de las bibliotecas para garantizar que todas las versiones sean compatibles.

    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:18.0.0")
    }
    ¿Buscas un módulo de biblioteca específico de Kotlin? A partir de octubre de 2023 (Firebase BoM 32.5.0), tanto los desarrolladores de Kotlin como los de Java pueden depender del módulo de la biblioteca principal (para obtener más información, consulta las Preguntas frecuentes sobre esta iniciativa).

  5. Agrega lo siguiente a la configuración de la variante de compilación de CI:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. En las clases de prueba, usa DebugAppCheckTestHelper para unir cualquier código que necesite un token de App Check:

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

Cuando la app se ejecute en un entorno de CI, los servicios de backend de Firebase aceptarán el token que envía como válido.