本頁面將說明如何使用內建的 Play Integrity 供應商在 Android 應用程式中啟用 App Check。啟用 App Check 可確保只有應用程式能存取專案的 Firebase 資源。請參閱這項功能的總覽。
目前內建 Play Integrity 供應商僅支援透過 Google Play 發行的 Android 應用程式。如要使用 Play Integrity 的 Play 外功能,或是搭配自訂供應商使用 App Check,請參閱「實作自訂 App Check 供應商」一文。
1. 設定 Firebase 專案
先將 Firebase 新增至 Android 專案 (如果尚未這麼做)。
啟用 Play Integrity API:
如果您尚未在 Google Play 管理中心選取應用程式或新增應用程式,請先完成這項操作。
在「版本」部分,按一下「應用程式完整性」。
前往該頁面的「Play Integrity API」部分,按一下「連結 Cloud 專案」,然後從 Google Cloud 專案清單中選取您的 Firebase 專案。 您在此選取的專案必須與註冊應用程式的 Firebase 專案相同 (請參閱下一個步驟)。
在 Firebase 控制台的 App Check 區段,為應用程式註冊使用 App Check,以便與 Play Integrity 供應商搭配使用。您需要提供應用程式簽署憑證的 SHA-256 指紋。
您通常需要註冊專案的所有應用程式,因為一旦為 Firebase 產品啟用強制執行功能,只有已註冊的應用程式可以存取產品的後端資源。
選用:在應用程式註冊設定中,針對供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。存留時間可設為 30 分鐘至 7 天之間的任何值。變更這個值時,請注意以下優缺點:
- 安全性:縮短存留時間越短,安全性就越高,越能避免攻擊者濫用權杖。
- 效能:縮短存留時間 (TTL) 越短,應用程式執行認證的頻率就會越高。由於應用程式認證程序會在每次執行網路要求時增加延遲時間,因此短暫存留時間可能會影響應用程式的效能。
- 配額與費用:縮短存留時間 (TTL) 和頻繁的重新認證作業會更快消耗配額。如果是付費服務,費用可能會增加。請參閱配額與限制。
對大多數應用程式來說,預設的存留時間是 1 小時。請注意,App Check 程式庫會以約半時間的 TTL 更新權杖。
2. 在應用程式中加入 App Check 程式庫
在模組 (應用程式層級) Gradle 檔案 (通常是<project>/<app-module>/build.gradle.kts
或 <project>/<app-module>/build.gradle
) 中,新增 Android 適用的 App Check 程式庫依附元件。建議您使用 Firebase Android BoM 控管程式庫的版本管理。
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.1.2")) // 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 程式庫版本。
(替代做法) 新增 Firebase 程式庫依附元件,「不」使用 BoM
如果選擇不使用 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:18.0.0") }
3. 初始化 App Check
將下列初始化程式碼新增至應用程式,讓它在使用任何 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 程式庫後,即可開始向使用者發布更新的應用程式。
更新後的用戶端應用程式將開始傳送 App Check 權杖,以及對 Firebase 發出的每個要求,但您在 Firebase 控制台的「App Check」部分啟用強制執行後,Firebase 產品就不會要求權杖有效。
監控指標並啟用強制執行功能
不過,在強制執行之前,您應先確認這樣做不會影響現有的合法使用者。另一方面,如果您發現應用程式資源遭到濫用,建議您盡早啟用強制執行功能。
為做出此決定,您可以查看所用服務的 App Check 指標:
- 針對即時資料庫、Cloud Firestore、Cloud Storage 和驗證 (Beta 版) 監控 App Check 要求指標。
- 監控 Cloud Functions 的 App Check 要求指標。
啟用強制執行 App Check
瞭解 App Check 會對使用者造成哪些影響,您已準備好進行後續步驟時,可以啟用 App Check 強制執行功能:
- 針對即時資料庫、Cloud Firestore、Cloud Storage 和驗證 (Beta 版),啟用 App Check 強制執行功能。
- 啟用 Cloud Functions 的 App Check 強制執行功能。
在偵錯環境中使用 App Check
為應用程式註冊 App Check 後,如果您想在 App Check 通常不會歸類為有效的環境中 (例如開發期間的模擬器,或是從持續整合 (CI) 環境) 執行應用程式,您可以建立採用 App Check 偵錯供應商 (而非實際認證供應商) 的應用程式偵錯版本。
請參閱「搭配 Android 偵錯供應商使用 App Check」一文。