На этой странице показано, как включить проверку приложений в приложении Android с помощью собственного поставщика проверки приложений . Включив проверку приложений, вы гарантируете, что только ваше приложение сможет получить доступ к ресурсам Firebase вашего проекта.
Если вы хотите использовать проверку приложений с поставщиком Play Integrity по умолчанию, см. раздел Включение проверки приложений с помощью Play Integrity на Android .
Прежде чем вы начнете
Добавьте Firebase в свой проект Android, если вы еще этого не сделали.
Реализуйте серверную логику своего собственного поставщика проверки приложений .
1. Добавьте библиотеку проверки приложений в свое приложение.
В файле Gradle вашего модуля (на уровне приложения) (обычно<project>/<app-module>/build.gradle.kts
или <project>/<app-module>/build.gradle
) добавьте зависимость для проверки приложений. библиотека для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.6.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, вы должны указать каждую версию библиотеки 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:17.1.1") }
2. Реализуйте интерфейсы проверки приложений.
Во-первых, вам необходимо создать классы, реализующие интерфейсы AppCheckProvider
и AppCheckProviderFactory
.
Ваш класс AppCheckProvider
должен иметь метод getToken()
, который собирает любую информацию, необходимую вашему пользовательскому поставщику проверки приложений в качестве доказательства подлинности, и отправляет ее в службу получения токенов в обмен на токен проверки приложений. SDK App Check занимается кэшированием токенов, поэтому всегда получайте новый токен в своей реализации getToken()
.
Kotlin+KTX
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+KTX
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. Инициализировать проверку приложения
Добавьте в свое приложение следующий код инициализации, чтобы оно запускалось до использования любых других SDK Firebase:
Kotlin+KTX
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
Следующие шаги
После установки библиотеки App Check в ваше приложение начните распространять обновленное приложение среди своих пользователей.
Обновленное клиентское приложение начнет отправлять токены проверки приложений вместе с каждым запросом к Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе «Проверка приложений» консоли Firebase.
Отслеживайте показатели и обеспечивайте принудительное применение
Однако прежде чем включать принудительное применение, вы должны убедиться, что это не повредит работе существующих законных пользователей. С другой стороны, если вы заметили подозрительное использование ресурсов вашего приложения, возможно, вам захочется включить принудительное применение раньше.
Чтобы принять это решение, вы можете просмотреть показатели проверки приложений для используемых вами сервисов:
- Отслеживайте показатели запросов проверки приложений для базы данных в реальном времени, Cloud Firestore, облачного хранилища и аутентификации (бета-версия).
- Отслеживайте метрики запросов App Check для облачных функций .
Включить принудительное выполнение проверки приложений
Когда вы поймете, как проверка приложений повлияет на ваших пользователей, и будете готовы продолжить, вы сможете включить принудительное выполнение проверки приложений:
- Включите принудительное выполнение проверки приложений для базы данных в реальном времени, Cloud Firestore, облачного хранилища и аутентификации (бета-версия).
- Включите принудительное применение проверки приложений для облачных функций .
Используйте проверку приложений в средах отладки
Если после регистрации приложения для проверки приложений вы хотите запустить его в среде, которую проверка приложений обычно не классифицирует как допустимую, например в эмуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создайте отладочную сборку вашего приложения, которая использует поставщика отладки App Check вместо реального поставщика аттестации.
См. раздел «Использование проверки приложений с поставщиком отладки на Android ».