Se, depois de registrar seu aplicativo no App Check, você quiser executá-lo em um ambiente que o App Check normalmente não classificaria como válido, como um emulador durante o desenvolvimento ou de uma integração contínua (CI), será possível criar um build de depuração do seu app que use o provedor de depuração do App Check em vez de um provedor de atestado real.
Usar o provedor de depuração em um emulador
Para usar o provedor de depuração enquanto executa seu app em um emulador de forma interativa (durante o desenvolvimento, por exemplo), faça o seguinte:
No arquivo do Gradle (geralmente
app/build.gradle
) do módulo (nível do app), declare a dependência da biblioteca Android do App Check: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' }
No seu build de depuração, configure o App Check para usar a fábrica do provedor de depuração:
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());
Inicie o app e acione uma chamada para um serviço de back-end do Firebase. Um token de depuração local será registrado quando o SDK tentar enviar uma solicitação ao back-end. Exemplo:
D DebugAppCheckProvider: Enter this debug secret into the allow list in the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
Na seção App Check no Console do Firebase, selecione Gerenciar tokens de depuração no menu flutuante do app. Em seguida, registre o token de depuração que você registrou na etapa anterior.
Depois que você registrar o token, os serviços de back-end do Firebase o aceitarão como válido.
Como esse token permite acesso aos recursos do Firebase sem um dispositivo válido, é fundamental mantê-lo particular. Não o confirme em um repositório público. Se um token registrado for comprometido, revogue-o imediatamente no Console do Firebase.
Usar o provedor de depuração para testes de unidade em um ambiente de CI
Para usar o provedor de depuração para testes de unidade em um ambiente de integração contínua (CI), faça o seguinte:
Na seção App Check no Console do Firebase, escolha Gerenciar tokens de depuração no menu flutuante do app. Em seguida, crie um novo token de depuração. Você precisará do token na próxima etapa.
Como esse token permite acesso aos recursos do Firebase sem um dispositivo válido, é fundamental mantê-lo particular. Não o confirme em um repositório público. Se um token registrado for comprometido, revogue-o imediatamente no Console do Firebase.
Adicione o token de depuração que você acabou de criar ao armazenamento de chaves seguras do seu sistema de CI (por exemplo, secrets criptografados do GitHub Actions ou variáveis criptografadas do Travis CI).
Se necessário, configure o sistema de CI para disponibilizar o token de depuração no ambiente de CI como uma variável de ambiente. Dê um nome à variável como
APP_CHECK_DEBUG_TOKEN_FROM_CI
.No arquivo Gradle do módulo (nível do app) (geralmente
app/build.gradle
):Declare a dependência de teste para a biblioteca de depuração do App Check no Android:
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' }
Adicione o seguinte à configuração da variante de build de CI:
testInstrumentationRunnerArgument "firebaseAppCheckDebugSecret", System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ''
Nas classes de teste, use a
DebugAppCheckTestHelper
para agrupar qualquer código que precise de um token do 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. }); } }
Quando seu app é executado em um ambiente de CI, os serviços de back-end do Firebase aceitam o token enviado como válido.