| 选择平台: | iOS+ Android Web Flutter |
本页介绍了如何使用 reCAPTCHA Enterprise 提供方在 Android 应用中设置 App Check。App Check 有助于确保只有您的应用可以访问项目的后端资源。如需了解详情,请查看我们的 App Check 概览。
App Check 需要使用基于分数的 reCAPTCHA 密钥,因此对用户来说是不可见的。这意味着 reCAPTCHA Enterprise 提供程序永远不会要求用户进行验证。
如果您的应用场景需要 reCAPTCHA Enterprise 未实现的 App Check 功能,或者您想将 App Check 与自己的自定义提供方搭配使用,请参阅实现自定义 App Check 提供方。
1. 设置您的 Firebase 项目
将 Firebase 添加到您的 Android 项目(如果尚未添加)。
在 Google Cloud 控制台中,前往欺诈防御页面,然后针对 reCAPTCHA Enterprise 提供商执行以下操作:
确保您位于正确的项目中(请参阅屏幕顶部的项目选择器)。
如果系统提示,请启用 reCAPTCHA Enterprise API。
创建 Android 类型的密钥,并指定应用的软件包名称(例如
com.example.my_app)。请务必输入您在 Firebase 项目中创建 Firebase Android 应用时提供的软件包名称。软件包名称值区分大小写。
对于 App Check,每个软件包名称只能对应一个 reCAPTCHA 密钥。
如需查看详细说明,请参阅创建基于得分的 reCAPTCHA 密钥。
请记下此密钥。您需要在 Firebase 控制台的注册流程中添加该信息。
在 Firebase 控制台中,依次前往安全性 > App Check。
在应用标签页中,注册您的 Android 应用,以便将 App Check 与 reCAPTCHA Enterprise 提供方搭配使用。 您需要提供在 Google Cloud 控制台中获取的密钥。
可选:设置令牌存留时间 (TTL)。
在应用注册设置中,为提供方颁发的 App Check 令牌设置自定义存留时间 (TTL)。您可以将 TTL 设置为 30 分钟到 7 天之间的任何值。更改此值时,请注意权衡以下几个方面:
- 安全性:较短的 TTL 可以提供更强的安全性,因为它可以缩短攻击者可能滥用已泄露或者已被拦截的令牌的时长。
- 性能:较短的 TTL 意味着您的应用将更频繁地执行证明操作。由于每次执行应用证明过程都会增加网络请求的延迟时间,因此短 TTL 可能会影响应用的性能。
- 配额和费用:较短的 TTL 和频繁的重新证明会更快地耗尽您的配额,而对于付费服务,费用可能更高。请参阅配额和限制。
对于大多数应用而言,默认的 TTL(1 小时)比较合理。请注意,App Check 库会在达到 TTL 时长约一半时刷新令牌。
可选:配置高级设置。
点击保存。
(可选)配置高级设置
当用户打开您的应用时,reCAPTCHA Enterprise 会评估用户在密钥控制下的互动所带来的风险等级,并返回一个介于 0.0 和 1.0 之间的得分,增量为 0.1。
- 0.0 分表示互动风险高,可能具有欺诈性。
- 1.0 分表示互动风险低,很可能是合法的。
借助 App Check,您可以配置应用风险阈值,以便可调整您对此风险的容忍度。
对于大多数应用场景,建议使用默认阈值 0.5。如果您的应用场景需要调整,可以在 Firebase 控制台中为每个应用配置此值(依次前往安全性 > App Check)。 请务必展开并查看下文中有关配置应用风险阈值的重要注意事项。
2. 将 App Check SDK 添加至您的应用
如需使用 reCAPTCHA Enterprise 提供程序,您必须添加相应的依赖项。
Firebase Android BoM我们建议使用 Firebase Android BoM 来实现库版本控制。dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.19.0")) // Add the dependency for the App Check reCAPTCHA library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-recaptcha") }
借助 Firebase Android BoM,可确保您的应用使用的始终是 Firebase Android 库的兼容版本。
(替代方法) 在不使用 BoM 的情况下添加 Firebase 库依赖项
如果您选择不使用 Firebase BoM,则必须在每个 Firebase 库的依赖项行中指定相应的库版本。
请注意,如果您在应用中使用多个 Firebase 库,我们强烈建议您使用 BoM 来管理库版本,从而确保所有版本都兼容。
dependencies { // Add the dependency for the App Check reCAPTCHA library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-recaptcha:19.2.1") }
3. 初始化 App Check
在您的应用中,您需要先初始化 App Check,然后才能使用任何其他 Firebase 服务。
Kotlin
Firebase.initialize(context = this)
Firebase.appCheck.installAppCheckProviderFactory(
RecaptchaAppCheckProviderFactory.getInstance("SITE_KEY")
)
Java
FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
RecaptchaAppCheckProviderFactory.getInstance("SITE_KEY"));
4. 监控指标并启用强制执行
在应用中设置 App Check 后,开始将更新后的应用分发给用户。
更新后的客户端应用会开始将 App Check 令牌随其发出的每个请求一起发送到 Firebase。不过,在App Check强制执行之前,App Check不会屏蔽包含无效令牌的请求。
监控指标
在启用强制执行之前,请确保这样做不会干扰现有的合法用户。不过,如果您发现自己的应用资源被非法使用,建议您尽快启用强制执行。
为帮助您做出相关决策,建议您查看自己使用的服务的 App Check 指标:
- 针对 Firebase AI Logic、SQL Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API 和 Places API(新版)监控 App Check 请求指标。
- 监控 Cloud Functions 的 App Check 请求指标。
启用 App Check 强制执行
在了解 App Check 对用户有何影响并为后续操作做好准备之后,您便可以启用 App Check 强制执行:
- 针对 Firebase AI Logic、SQL Connect、Realtime Database、Cloud Firestore、Cloud Storage、Authentication、Google Identity for iOS、Maps JavaScript API 和 Places API(新版)启用 App Check 强制执行。
- 为 Cloud Functions 启用 App Check 强制执行。
在调试环境中使用 App Check
App Check 将某些环境归类为无效环境,例如在开发期间来自模拟器 / 仿真器的请求,或来自持续集成 (CI) 环境的请求。
在强制执行 App Check 后,如需在这些类型的环境中运行应用,您需要创建应用的调试 build,该 build 使用 App Check 调试提供方,而不是生产环境证明提供方。
如需了解详情,请参阅将 App Check 与调试提供方搭配使用 (Android)。
价格
每次应用刷新其 App Check 令牌时,App Check 都会代表您创建评估,以验证用户的响应令牌。对于超出免费配额的每项创建的评估,我们会对您的 Firebase 项目收费。如需了解详情,请参阅reCAPTCHA 价格。
默认情况下,您的应用每 1 小时会刷新此令牌两次。如需控制应用刷新 App Check 令牌的频率(以及新评估的创建频率),您可以配置令牌 TTL。