欢迎参加我们将于 2022 年 10 月 18 日举办的 Firebase 峰会(线上线下同时进行),了解 Firebase 如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。立即报名

开始在 Android 上使用带有 Play Integrity 的 App Check

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

此页面向您展示如何使用内置的 Play Integrity 提供程序在 Android 应用程序中启用应用程序检查。当您启用 App Check 时,您有助于确保只有您的应用可以访问您项目的 Firebase 资源。请参阅此功能的概述

目前,内置的 Play Integrity 提供程序仅支持由 Google Play 分发的 Android 应用程序。要使用 Play Integrity 的 off-Play 功能,或将 App Check 与您自己的自定义提供程序一起使用,请参阅实现自定义应用程序检查提供程序

1. 设置您的 Firebase 项目

  1. 如果您还没有这样做,请将 Firebase 添加到您的 Android 项目中。

  2. 启用 Play Integrity API:

    1. Google Play Console中,选择您的应用程序,或者如果您还没有这样做,请添加它。

    2. 发布部分,单击设置 > 应用程序完整性

    3. Integrity API页面上,点击Link project ,然后从 Google Cloud 项目列表中选择您的 Firebase 项目。

      您在此处选择的项目必须与您在其中注册应用的 Firebase 项目相同(请参阅下一步)。

  3. 在 Firebase 控制台的App Check部分注册您的应用以使用 Play Integrity 提供程序使用 App Check。您需要提供应用签名证书的 SHA-256 指纹

    您通常需要注册项目的所有应用,因为一旦您为 Firebase 产品启用强制执行,只有已注册的应用才能访问该产品的后端资源。

  4. 可选:在应用注册设置中,为提供商发布的应用检查令牌设置自定义生存时间 (TTL)。您可以将 TTL 设置为 30 分钟到 7 天之间的任何值。更改此值时,请注意以下权衡:

    • 安全性:较短的 TTL 提供了更强的安全性,因为它减少了泄露或拦截的令牌可能被攻击者滥用的窗口。
    • 性能:较短的 TTL 意味着您的应用将更频繁地执行证明。由于应用程序证明过程每次执行都会增加网络请求的延迟,因此较短的 TTL 可能会影响应用程序的性能。
    • 配额和成本:较短的 TTL 和频繁的重新证明会更快地耗尽您的配额,而对于付费服务,可能会花费更多。请参阅配额和限制

    对于大多数应用程序来说, 1 小时的默认 TTL 是合理的。请注意,App Check 库以大约一半的 TTL 持续时间刷新令牌。

2. 将 App Check 库添加到您的应用程序

在您的模块(应用级)Gradle 文件(通常是<project>/<app-module>/build.gradle )中,添加 App Check Android 库的依赖项。我们建议使用Firebase Android BoM来控制库版本控制。

Java

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

通过使用Firebase Android BoM ,您的应用将始终使用兼容版本的 Firebase Android 库。

(替代)使用 BoM 的情况下添加 Firebase 库依赖项

如果您选择不使用 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-playintegrity:16.0.2'
}

Kotlin+KTX

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

通过使用Firebase Android BoM ,您的应用将始终使用兼容版本的 Firebase Android 库。

(替代)使用 BoM 的情况下添加 Firebase 库依赖项

如果您选择不使用 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-playintegrity:16.0.2'
}

3.初始化应用检查

将以下初始化代码添加到您的应用中,以便它在您使用任何其他 Firebase SDK 之前运行:

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
        PlayIntegrityAppCheckProviderFactory.getInstance());

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    PlayIntegrityAppCheckProviderFactory.getInstance()
)

下一步

在您的应用中安装 App Check 库后,开始将更新的应用分发给您的用户。

更新后的客户端应用将开始向 Firebase 发出的每个请求发送 App Check 令牌,但 Firebase 产品不需要令牌有效,直到您在 Firebase 控制台的 App Check 部分启用强制执行。

监控指标并启用强制执行

但是,在启用强制执行之前,您应该确保这样做不会破坏您现有的合法用户。另一方面,如果您发现对应用资源的使用可疑,您可能希望尽快启用强制执行。

为了帮助做出此决定,您可以查看您使用的服务的 App Check 指标:

启用应用检查强制

当您了解 App Check 将如何影响您的用户并准备好继续时,您可以启用 App Check 强制:

在调试环境中使用 App Check

如果在您为 App Check 注册了您的应用程序后,您希望在 App Check 通常不会归类为有效的环境中运行您的应用程序,例如开发期间的模拟器或持续集成 (CI) 环境,您可以创建使用 App Check 调试提供程序而不是真正的证明提供程序的应用程序的调试版本。

请参阅在 Android 上通过调试提供程序使用 App Check