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

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

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Si, después de haber registrado su aplicación para App Check, desea ejecutar su aplicación 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 use el proveedor de depuración de App Check en lugar de un proveedor de atestació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 el archivo Gradle de tu módulo (nivel de aplicación) (generalmente app/build.gradle ), declara la dependencia para la biblioteca de Android App Check:

    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. 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 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 Verificación de la aplicación de Firebase console, elija Administrar tokens de depuración en el menú adicional 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 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 fundamental que lo mantenga en privado. No lo confirme en un repositorio público y, si alguna vez se compromete un token registrado, revélelo de inmediato en la consola de Firebase.

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

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

  1. En la sección Verificación de la aplicación de Firebase console, elija Administrar tokens de depuración en el menú adicional 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 fundamental que lo mantenga en privado. No lo confirme en un repositorio público y, si alguna vez se compromete un token registrado, revélelo de inmediato en la consola de Firebase.

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

  2. Agregue el token de depuración que acaba de crear al almacén de claves seguras de su sistema CI (por ejemplo, los secretos cifrados de GitHub Actions o las variables cifradas de Travis CI).

  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. Nombra la variable como APP_CHECK_DEBUG_TOKEN_FROM_CI .

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

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

      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. 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, use DebugAppCheckTestHelper para envolver cualquier código que necesite un token de 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.
            }
        }
    }
    

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.