Usar o App Check com o provedor de depuração

Se, depois de registrar seu app no App Check, você quiser executá-lo em um ambiente que o App Check normalmente não classifica como válido, como um simulador durante o desenvolvimento ou um ambiente de integração contínua (CI), é possível criar um build de depuração do app que usa o provedor de depuração do App Check em vez do App Attest.

Usar o provedor de depuração em um simulador

Para usar o provedor de depuração enquanto executa seu app em um simulador de forma interativa (durante o desenvolvimento, por exemplo), faça o seguinte:

  1. Procure a chave de API do iOS do seu projeto na página Credenciais da seção APIs e serviços do console do Google Cloud.

  2. No build de depuração, configure o App Check para usar o provedor de depuração. Será necessário especificar a chave de API que você recebeu na etapa anterior.

    #if targetEnvironment(simulator)
    GIDSignIn.sharedInstance.configureDebugProvider(withAPIKey: apiKey) { error in
      if let error {
        print("Error configuring `GIDSignIn` for App Check: \(error)")
      }
    }
    #else
    // Configure App Check for production.
    #endif
    
  3. Inicie o app. Um token de depuração local será registrado no console do Xcode quando o SDK tentar enviar uma solicitação para o back-end. Exemplo:

    <Warning> [AppCheckCore][I-GAC004001] App Check debug token:
    '123a4567-b89c-12d3-e456-789012345678'.
    
  4. Na seção App Check do Console do Firebase, escolha Gerenciar tokens de depuração no menu flutuante do app. Em seguida, registre o token de depuração que você registrou na etapa anterior.

    Captura de tela do item de menu &quot;Gerenciar tokens de depuração&quot;

Depois que você registrar o token, os endpoints OAuth 2.0 do Google o aceitarão como válido para seu projeto.

Como esse token permite acesso aos endpoints de autenticação sem um dispositivo válido, é fundamental que você o mantenha privado. 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 em um ambiente de CI

Para usar o provedor de depuração em um ambiente de integração contínua (CI), faça o seguinte:

  1. Na seção App Check do Console do Firebase, escolha Gerenciar tokens de depuração no menu flutuante do app. Em seguida, crie um novo token de depuração. Você vai precisar do token na próxima etapa.

    Como esse token permite acesso aos endpoints de autenticação sem um dispositivo válido, é essencial mantê-lo privado. Não o confirme em um repositório público. Se um token registrado for comprometido, revogue-o imediatamente no Console do Firebase.

    Captura de tela do item de menu &quot;Gerenciar tokens de depuração&quot;

  2. Adicione o token de depuração que você acabou de criar ao armazenamento de chaves seguro do sistema de CI (por exemplo, secrets criptografados do GitHub Actions ou as variáveis criptografadas do Travis CI).

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

  4. No Xcode, adicione uma variável de ambiente ao esquema de teste com o nome FIRAAppCheckDebugToken e algo como $(APP_CHECK_DEBUG_TOKEN) como o valor.

  5. Configure o script de teste de CI para transmitir o token de depuração como uma variável de ambiente. Exemplo:

    xcodebuild test -scheme YourTestScheme -workspace YourProject.xcworkspace \
    APP_CHECK_DEBUG_TOKEN=$(APP_CHECK_DEBUG_TOKEN_FROM_CI)
  6. Procure a chave de API do iOS do seu projeto na página Credenciais da seção APIs e serviços do console do Google Cloud.

  7. No build de depuração, configure o App Check para usar o provedor de depuração. Será necessário especificar a chave de API que você recebeu na etapa anterior.

    #if targetEnvironment(simulator)
    GIDSignIn.sharedInstance.configureDebugProvider(withAPIKey: apiKey) { error in
      if let error {
        print("Error configuring `GIDSignIn` for App Check: \(error)")
      }
    }
    #else
    // Configure App Check for production.
    #endif
    

Quando seu app é executado em um ambiente de CI, os endpoints OAuth 2.0 do Google aceitam o token enviado como válido para o projeto.