本頁面向您展示如何使用內置的 Play Integrity 提供程序在 Android 應用程序中啟用應用程序檢查。啟用應用檢查後,您可以幫助確保只有您的應用可以訪問項目的 Firebase 資源。請參閱此功能的概述。
目前,內置的 Play Integrity 提供程序僅支持 Google Play 分發的 Android 應用程序。要使用 Play Integrity 的場外功能,或將 App Check 與您自己的自定義提供商結合使用,請參閱實施自定義 App Check 提供商。
1. 設置您的 Firebase 項目
啟用 Play 完整性 API:
在Google Play 管理中心中,選擇您的應用,或者添加它(如果您尚未這樣做)。
在“發布”部分中,單擊“應用程序完整性” 。
轉到頁面的Play Integrity API部分,點擊鏈接 Cloud 項目,然後從 Google Cloud 項目列表中選擇您的 Firebase 項目。您在此處選擇的項目必須與您在其中註冊應用程序的 Firebase 項目相同(請參閱下一步)。
在 Firebase 控制台的App Check 部分中,通過 Play Integrity 提供商註冊您的應用以使用 App Check。您需要提供應用簽名證書的 SHA-256 指紋。
您通常需要註冊項目的所有應用,因為一旦為 Firebase 產品啟用強制執行,只有註冊的應用才能訪問該產品的後端資源。
可選:在應用程序註冊設置中,為提供商頒發的應用程序檢查令牌設置自定義生存時間 (TTL)。您可以將 TTL 設置為 30 分鐘到 7 天之間的任意值。更改此值時,請注意以下權衡:
- 安全性:較短的 TTL 提供更強的安全性,因為它減少了攻擊者濫用洩露或攔截的令牌的窗口。
- 性能:較短的 TTL 意味著您的應用程序將更頻繁地執行證明。由於應用程序證明過程會在每次執行時增加網絡請求的延遲,因此較短的 TTL 可能會影響應用程序的性能。
- 配額和成本:較短的 TTL 和頻繁的重新認證會更快地耗盡您的配額,對於付費服務,可能會花費更多。請參閱配額和限制。
對於大多數應用程序來說,默認 TTL 1 小時是合理的。請注意,App Check 庫會在大約 TTL 持續時間的一半時刷新令牌。
2. 將 App Check 庫添加到您的應用程序中
在模塊(應用程序級)Gradle 文件(通常<project>/<app-module>/build.gradle.kts
或<project>/<app-module>/build.gradle
)中,添加 App Check 的依賴項安卓庫。我們建議使用Firebase Android BoM來控制庫版本控制。 Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependencies for the App Check libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-playintegrity")
implementation("com.google.firebase:firebase-appcheck-ktx") }
通過使用Firebase Android BoM ,您的應用將始終使用 Firebase Android 庫的兼容版本。
(替代方法)在不使用 BoM 的情況下添加 Firebase 庫依賴項
如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。
請注意,如果您在應用中使用多個Firebase 庫,我們強烈建議使用 BoM 來管理庫版本,這可確保所有版本兼容。
dependencies { // Add the dependencies for the App Check libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-playintegrity:17.0.1")
implementation("com.google.firebase:firebase-appcheck-ktx:17.0.1") }
Java
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.3.1")) // Add the dependencies for the App Check libraries // 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 dependencies for the App Check libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-appcheck-playintegrity:17.0.1") }
3. 初始化應用檢查
將以下初始化代碼添加到您的應用中,以便它在您使用任何其他 Firebase SDK 之前運行:
Kotlin+KTX
Firebase.initialize(context = this) Firebase.appCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance(), )
Java
FirebaseApp.initializeApp(/*context=*/ this); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( PlayIntegrityAppCheckProviderFactory.getInstance());
下一步
在您的應用程序中安裝 App Check 庫後,開始向您的用戶分發更新的應用程序。
更新後的客戶端應用程序將開始隨其向Firebase 發出的每個請求一起發送App Check 令牌,但在您在Firebase 控制台的App Check 部分中啟用強制執行之前,Firebase 產品不會要求令牌有效。
監控指標並啟用執行
但是,在啟用強制執行之前,您應該確保這樣做不會干擾您現有的合法用戶。另一方面,如果您發現應用程序資源的可疑使用,您可能希望盡快啟用強制執行。
為了幫助做出此決定,您可以查看您使用的服務的 App Check 指標:
啟用應用程序檢查強制執行
當您了解 App Check 將如何影響您的用戶並且準備好繼續操作時,您可以啟用 App Check 強制執行:
- 為實時數據庫、Cloud Firestore、雲存儲和身份驗證(測試版)啟用應用程序檢查強制執行。
- 為 Cloud Functions 啟用應用程序檢查強制執行。
在調試環境中使用 App Check
如果您在為App Check 註冊您的應用程序後,想要在App Check 通常不會歸類為有效的環境中運行您的應用程序,例如開發期間的模擬器,或者在持續集成(CI) 環境中,您可以創建應用程序的調試版本,該版本使用 App Check 調試提供程序而不是真正的證明提供程序。
請參閱在 Android 上使用 App Check 與調試提供程序。