Используйте проверку приложений с поставщиком отладки на Android

Если после регистрации вашего приложения в App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как допустимую, например, в эмуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку вашего приложения, которая использует отладочный поставщик App Check вместо реального поставщика аттестации.

Используйте отладочный провайдер в эмуляторе.

Чтобы использовать отладочный провайдер при интерактивном запуске приложения в эмуляторе (например, во время разработки), выполните следующие действия:

  1. В файл Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость от библиотеки App Check для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотек.

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

    Использование Firebase Android BoM , что ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернативный вариант) Добавление зависимостей библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вам необходимо указать версию каждой библиотеки Firebase в строке зависимости.

    Обратите внимание, что если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.

    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:19.0.1")
    }

  2. В отладочной сборке настройте App Check для использования фабрики поставщиков отладки:

    Kotlin

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

    Java

    FirebaseApp.initializeApp(/*context=*/ this);
    FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
    firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance());
  3. Запустите приложение и инициируйте вызов к бэкэнд-сервису Firebase. При попытке SDK отправить запрос на бэкэнд будет записан локальный отладочный токен. Например:

    D DebugAppCheckProvider: Enter this debug secret into the allow list in
    the Firebase Console for your project: 123a4567-b89c-12d3-e456-789012345678
  4. В разделе App Check консоли Firebase выберите «Управление отладочными токенами» в контекстном меню вашего приложения. Затем зарегистрируйте отладочный токен, который вы использовали на предыдущем шаге.

    Скриншот пункта меню «Управление отладочными токенами».

После регистрации токена серверные службы Firebase будут считать его действительным.

Поскольку этот токен позволяет получить доступ к вашим ресурсам Firebase без действительного устройства, крайне важно хранить его в секрете. Не добавляйте его в общедоступный репозиторий, и если зарегистрированный токен будет скомпрометирован, немедленно отзовите его в консоли Firebase .

Используйте отладчик для модульного тестирования в среде непрерывной интеграции (CI).

Для использования отладочного провайдера в модульном тестировании в среде непрерывной интеграции (CI) выполните следующие действия:

  1. В разделе App Check консоли Firebase выберите «Управление отладочными токенами» в контекстном меню вашего приложения. Затем создайте новый отладочный токен. Он понадобится вам на следующем шаге.

    Поскольку этот токен позволяет получить доступ к вашим ресурсам Firebase без действительного устройства, крайне важно хранить его в секрете. Не добавляйте его в общедоступный репозиторий, и если зарегистрированный токен будет скомпрометирован, немедленно отзовите его в консоли Firebase .

    Скриншот пункта меню «Управление отладочными токенами».

  2. Добавьте созданный вами отладочный токен в защищенное хранилище ключей вашей системы CI (например, в зашифрованные секреты GitHub Actions или зашифрованные переменные Travis CI).

  3. При необходимости настройте вашу систему CI так, чтобы ваш отладочный токен был доступен в среде CI в качестве переменной среды. Назовите переменную, например, APP_CHECK_DEBUG_TOKEN_FROM_CI .

  4. В файл Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость от библиотеки App Check для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотек.

    Kotlin

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

    Использование Firebase Android BoM , что ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернативный вариант) Добавление зависимостей библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вам необходимо указать версию каждой библиотеки Firebase в строке зависимости.

    Обратите внимание, что если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.

    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:19.0.1")
    }

    Java

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

    Использование Firebase Android BoM , что ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернативный вариант) Добавление зависимостей библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вам необходимо указать версию каждой библиотеки Firebase в строке зависимости.

    Обратите внимание, что если вы используете несколько библиотек Firebase в своем приложении, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.

    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:19.0.1")
    }

  5. Добавьте следующее в конфигурацию вашего варианта сборки CI:

    testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] =
        System.getenv("APP_CHECK_DEBUG_TOKEN_FROM_CI") ?: ""
    
  6. В тестовых классах используйте DebugAppCheckTestHelper для обертывания любого кода, которому требуется токен App Check :

    Kotlin

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

Когда ваше приложение работает в среде CI, бэкэнд-сервисы Firebase принимают отправленный токен как действительный.