На этой странице показано, как включить проверку приложений в приложении для Android с помощью собственного поставщика проверки приложений . Включив проверку приложений, вы гарантируете, что только ваше приложение может получить доступ к ресурсам Firebase вашего проекта.
Если вы хотите использовать проверку приложений с поставщиком Play Integrity по умолчанию, см. статью Включение проверки приложений с помощью Play Integrity на Android .
Прежде чем вы начнете
Добавьте Firebase в свой проект Android, если вы еще этого не сделали.
Реализуйте серверную логику своего собственного поставщика проверки приложений .
1. Добавьте библиотеку App Check в свое приложение.
В файле Gradle вашего модуля (уровня приложения) (обычно app/build.gradle
) объявите зависимость для библиотеки Android App Check:
Kotlin+KTX
dependencies {
implementation 'com.google.firebase:firebase-appcheck:17.0.1'
}
Java
dependencies {
implementation 'com.google.firebase:firebase-appcheck:17.0.1'
}
2. Внедрите интерфейсы проверки приложений
Во-первых, необходимо создать классы, реализующие интерфейсы AppCheckProvider
и AppCheckProviderFactory
.
В вашем классе AppCheckProvider
должен быть метод getToken()
, который собирает любую информацию, требуемую вашим настраиваемым поставщиком проверки приложений в качестве доказательства подлинности, и отправляет ее в службу получения токенов в обмен на токен проверки приложений. App Check SDK обрабатывает кэширование токенов, поэтому всегда получайте новый токен в своей реализации getToken()
.
Kotlin+KTX
class YourCustomAppCheckToken(
private val token: String,
private val expiration: Long
) : AppCheckToken() {
override fun getToken(): String {
return token
}
override fun getExpireTimeMillis(): Long {
return expiration
}
}
class YourCustomAppCheckProvider : AppCheckProvider {
val token: Task<AppCheckToken>
get() {
// Logic to exchange proof of authenticity for an App Check token.
// ...
// Refresh the token early to handle clock skew.
val expMillis: Long = expirationFromServer * 1000 - 60000
// Create AppCheckToken object.
val appCheckToken: AppCheckToken =
YourCustomAppCheckToken(tokenFromServer, expMillis)
return 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 {
@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 * 1000 - 60000;
// Create AppCheckToken object.
AppCheckToken appCheckToken =
YourCustomAppCheckToken(tokenFromServer, expMillis);
return appCheckToken;
}
}
Кроме того, реализуйте класс AppCheckProviderFactory
, который создает экземпляры вашей реализации AppCheckProvider
:
Kotlin+KTX
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
fun create(firebaseApp: FirebaseApp): AppCheckProvider {
// Create and return an AppCheckProvider object.
return YourCustomAppCheckProvider(firebaseApp)
}
}
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
@Override
public AppCheckProvider create(FirebaseApp firebaseApp) {
// Create and return an AppCheckProvider object.
return new YourCustomAppCheckProvider(firebaseApp);
}
}
3. Инициализируйте проверку приложений
Добавьте в свое приложение следующий код инициализации, чтобы оно запускалось до того, как вы начнете использовать какие-либо другие SDK Firebase:
Kotlin+KTX
FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
YourCustomAppCheckProviderFactory.getInstance())
Java
FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
YourCustomAppCheckProviderFactory.getInstance());
Следующие шаги
После того, как библиотека App Check будет установлена в вашем приложении, начните распространять обновленное приложение среди своих пользователей.
Обновленное клиентское приложение начнет отправлять токены проверки приложений вместе с каждым запросом, который он отправляет в Firebase, но продукты Firebase не будут требовать, чтобы токены были действительными, пока вы не включите принудительное применение в разделе «Проверка приложений» консоли Firebase.
Отслеживайте показатели и включайте принудительное применение
Однако, прежде чем включить принудительное применение, вы должны убедиться, что это не нарушит работу ваших существующих законных пользователей. С другой стороны, если вы наблюдаете подозрительное использование ресурсов вашего приложения, возможно, вы захотите включить принудительное применение раньше.
Чтобы помочь вам принять это решение, вы можете просмотреть метрики App Check для используемых вами сервисов:
- Мониторинг метрик запроса App Check для базы данных в реальном времени, облачного хранилища Firestore, облачного хранилища и проверки подлинности (бета-версия).
- Отслеживайте метрики запроса App Check для Cloud Functions .
Включить принудительную проверку приложений
Когда вы поймете, как проверка приложений повлияет на ваших пользователей, и будете готовы продолжить, вы можете включить принудительную проверку приложений:
- Включите проверку приложений для базы данных в реальном времени, облачного хранилища Firestore, облачного хранилища и проверки подлинности (бета-версия).
- Включите проверку приложений для облачных функций .
Используйте проверку приложений в средах отладки
Если после того, как вы зарегистрировали свое приложение для проверки приложений, вы хотите запустить свое приложение в среде, которую проверка приложений обычно не классифицирует как допустимую, например, в эмуляторе во время разработки или в среде непрерывной интеграции (CI), вы можете создайте отладочную сборку вашего приложения, которая использует поставщик отладки App Check вместо реального поставщика аттестации.
См. раздел Использование проверки приложений с поставщиком отладки на Android .