На этой странице показано, как включить App Check в приложении Android, используя вашего поставщика App Check . Когда вы включаете App Check , вы помогаете гарантировать, что только ваше приложение может получить доступ к ресурсам Firebase вашего проекта.
Если вы хотите использовать App Check с поставщиком Play Integrity по умолчанию, см. раздел Включение App Check с помощью Play Integrity на Android .
Прежде чем начать
Добавьте Firebase в свой проект Android, если вы этого еще не сделали.
Реализуйте серверную логику вашего собственного поставщика App Check .
1. Добавьте библиотеку App Check в свое приложение.
В файле 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:33.15.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") }
Благодаря использованию 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:18.0.0") }
2. Реализуйте интерфейсы App Check
Сначала необходимо создать классы, реализующие интерфейсы AppCheckProvider
и AppCheckProviderFactory
.
Ваш класс AppCheckProvider
должен иметь метод getToken()
, который собирает любую информацию, которую ваш пользовательский поставщик App Check требует в качестве доказательства подлинности, и отправляет ее в вашу службу получения токенов в обмен на токен App Check . App Check SDK обрабатывает кэширование токенов, поэтому всегда получайте новый токен в вашей реализации getToken()
.
Kotlin
class YourCustomAppCheckToken( private val token: String, private val expiration: Long, ) : AppCheckToken() { override fun getToken(): String = token override fun getExpireTimeMillis(): Long = expiration } class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider { override fun getToken(): Task<AppCheckToken> { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. val expMillis = expirationFromServer * 1000L - 60000L // Create AppCheckToken object. val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis) return Tasks.forResult(appCheckToken) } }
Java
public class YourCustomAppCheckToken extends AppCheckToken { private String token; private long expiration; YourCustomAppCheckToken(String token, long expiration) { this.token = token; this.expiration = expiration; } @NonNull @Override public String getToken() { return token; } @Override public long getExpireTimeMillis() { return expiration; } } public class YourCustomAppCheckProvider implements AppCheckProvider { public YourCustomAppCheckProvider(FirebaseApp firebaseApp) { // ... } @NonNull @Override public Task<AppCheckToken> getToken() { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. long expMillis = expirationFromServer * 1000L - 60000L; // Create AppCheckToken object. AppCheckToken appCheckToken = new YourCustomAppCheckToken(tokenFromServer, expMillis); return Tasks.forResult(appCheckToken); } }
Также реализуйте класс AppCheckProviderFactory
, который создает экземпляры вашей реализации AppCheckProvider
:
Kotlin
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory { override fun create(firebaseApp: FirebaseApp): AppCheckProvider { // Create and return an AppCheckProvider object. return YourCustomAppCheckProvider(firebaseApp) } }
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory { @NonNull @Override public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) { // Create and return an AppCheckProvider object. return new YourCustomAppCheckProvider(firebaseApp); } }
3. Инициализация App Check
Добавьте следующий код инициализации в свое приложение, чтобы оно запускалось до использования любых других Firebase SDK:
Kotlin
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
Следующие шаги
После установки библиотеки App Check в ваше приложение начните распространять обновленное приложение среди пользователей.
Обновленное клиентское приложение начнет отправлять токены App Check вместе с каждым запросом, который оно делает в Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе App Check в консоли Firebase.
Мониторинг показателей и обеспечение соблюдения
Однако перед включением принудительного применения следует убедиться, что это не помешает вашим существующим законным пользователям. С другой стороны, если вы видите подозрительное использование ресурсов вашего приложения, вы можете включить принудительное применение раньше.
Чтобы принять решение, вы можете изучить показатели App Check для используемых вами сервисов:
- Отслеживайте метрики запросов App Check для Data Connect , Firebase AI Logic , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity для iOS, Maps JavaScript API и Places API (новое).
- Отслеживайте метрики запросов App Check для Cloud Functions .
Включить принудительное выполнение App Check
Когда вы поймете, как App Check повлияет на ваших пользователей, и будете готовы продолжить, вы можете включить принудительное выполнение App Check :
- Включите принудительное выполнение App Check для Data Connect , Firebase AI Logic , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity для iOS, Maps JavaScript API и Places API (новое).
- Включите принудительное выполнение App Check для Cloud Functions .
Используйте App Check в отладочных средах
Если после регистрации приложения для App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как допустимую, например, в эмуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку своего приложения, которая использует поставщик отладки App Check вместо настоящего поставщика подтверждения подлинности.
См. раздел Использование App Check с поставщиком отладки на Android .
,На этой странице показано, как включить App Check в приложении Android, используя вашего поставщика App Check . Когда вы включаете App Check , вы помогаете гарантировать, что только ваше приложение может получить доступ к ресурсам Firebase вашего проекта.
Если вы хотите использовать App Check с поставщиком Play Integrity по умолчанию, см. раздел Включение App Check с помощью Play Integrity на Android .
Прежде чем начать
Добавьте Firebase в свой проект Android, если вы этого еще не сделали.
Реализуйте серверную логику вашего собственного поставщика App Check .
1. Добавьте библиотеку App Check в свое приложение.
В файле 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:33.15.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") }
Благодаря использованию 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:18.0.0") }
2. Реализуйте интерфейсы App Check
Сначала необходимо создать классы, реализующие интерфейсы AppCheckProvider
и AppCheckProviderFactory
.
Ваш класс AppCheckProvider
должен иметь метод getToken()
, который собирает любую информацию, которую ваш пользовательский поставщик App Check требует в качестве доказательства подлинности, и отправляет ее в вашу службу получения токенов в обмен на токен App Check . App Check SDK обрабатывает кэширование токенов, поэтому всегда получайте новый токен в вашей реализации getToken()
.
Kotlin
class YourCustomAppCheckToken( private val token: String, private val expiration: Long, ) : AppCheckToken() { override fun getToken(): String = token override fun getExpireTimeMillis(): Long = expiration } class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider { override fun getToken(): Task<AppCheckToken> { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. val expMillis = expirationFromServer * 1000L - 60000L // Create AppCheckToken object. val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis) return Tasks.forResult(appCheckToken) } }
Java
public class YourCustomAppCheckToken extends AppCheckToken { private String token; private long expiration; YourCustomAppCheckToken(String token, long expiration) { this.token = token; this.expiration = expiration; } @NonNull @Override public String getToken() { return token; } @Override public long getExpireTimeMillis() { return expiration; } } public class YourCustomAppCheckProvider implements AppCheckProvider { public YourCustomAppCheckProvider(FirebaseApp firebaseApp) { // ... } @NonNull @Override public Task<AppCheckToken> getToken() { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. long expMillis = expirationFromServer * 1000L - 60000L; // Create AppCheckToken object. AppCheckToken appCheckToken = new YourCustomAppCheckToken(tokenFromServer, expMillis); return Tasks.forResult(appCheckToken); } }
Также реализуйте класс AppCheckProviderFactory
, который создает экземпляры вашей реализации AppCheckProvider
:
Kotlin
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory { override fun create(firebaseApp: FirebaseApp): AppCheckProvider { // Create and return an AppCheckProvider object. return YourCustomAppCheckProvider(firebaseApp) } }
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory { @NonNull @Override public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) { // Create and return an AppCheckProvider object. return new YourCustomAppCheckProvider(firebaseApp); } }
3. Инициализация App Check
Добавьте следующий код инициализации в свое приложение, чтобы оно запускалось до использования любых других Firebase SDK:
Kotlin
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
Следующие шаги
После установки библиотеки App Check в ваше приложение начните распространять обновленное приложение среди пользователей.
Обновленное клиентское приложение начнет отправлять токены App Check вместе с каждым запросом, который оно делает в Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе App Check в консоли Firebase.
Мониторинг показателей и обеспечение соблюдения
Однако перед включением принудительного применения следует убедиться, что это не помешает вашим существующим законным пользователям. С другой стороны, если вы видите подозрительное использование ресурсов вашего приложения, вы можете включить принудительное применение раньше.
Чтобы принять решение, вы можете изучить показатели App Check для используемых вами сервисов:
- Отслеживайте метрики запросов App Check для Data Connect , Firebase AI Logic , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity для iOS, Maps JavaScript API и Places API (новое).
- Отслеживайте метрики запросов App Check для Cloud Functions .
Включить принудительное выполнение App Check
Когда вы поймете, как App Check повлияет на ваших пользователей, и будете готовы продолжить, вы можете включить принудительное выполнение App Check :
- Включите принудительное выполнение App Check для Data Connect , Firebase AI Logic , Realtime Database , Cloud Firestore , Cloud Storage , Authentication , Google Identity для iOS, Maps JavaScript API и Places API (новое).
- Включите принудительное выполнение App Check для Cloud Functions .
Используйте App Check в отладочных средах
Если после регистрации приложения для App Check вы хотите запустить его в среде, которую App Check обычно не классифицирует как допустимую, например, в эмуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создать отладочную сборку своего приложения, которая использует поставщик отладки App Check вместо настоящего поставщика подтверждения подлинности.
См. раздел Использование App Check с поставщиком отладки на Android .