開始在 Android 上使用 App Check 和 Play Integrity

本頁面說明如何在 Android 應用程式中啟用 App Check,並使用內建的 Play Integrity 提供者。啟用 App Check 後,只有您的應用程式才能存取專案的 Firebase 資源。請參閱這項功能的總覽

目前,內建的 Play Integrity 提供者僅支援透過 Google Play 發布的 Android 應用程式。如要使用 Play Integrity 的非 Play 功能,或使用您自己的自訂供應商,請參閱「實作自訂 App Check 供應商」。App Check

1. 設定 Firebase 專案

  1. 如果您尚未將 Firebase 新增至 Android 專案,請先新增。

  2. 啟用 Play Integrity API:

    1. Google Play 管理中心中選取應用程式,或新增應用程式 (如果尚未新增)。

    2. 在「版本」部分,按一下「應用程式完整性」

    3. 前往頁面的「Play Integrity API」部分,按一下「連結 Cloud 專案」,然後從 Google Cloud 專案清單中選取 Firebase 專案。您在此選取的專案,必須與您註冊應用程式的 Firebase 專案相同 (請參閱下一個步驟)。

  3. Firebase 控制台的「App Check」部分,為應用程式註冊透過 Play Integrity 供應商使用 App Check。您需要提供應用程式簽署憑證的 SHA-256 指紋

    您通常需要註冊專案的所有應用程式,因為一旦啟用 Firebase 產品的強制執行功能,只有已註冊的應用程式才能存取產品的後端資源。

  4. 選用:在應用程式註冊設定中,為供應商核發的 App Check 權杖設定自訂存留時間 (TTL)。您可以將 TTL 設定為介於 30 分鐘至 7 天之間的任何值。變更這個值時,請注意下列取捨:

    • 安全性:存留時間越短,安全性就越高,因為這樣可縮短攻擊者濫用外洩或遭攔截權杖的時間範圍。
    • 效能:TTL 較短表示應用程式會更頻繁地執行認證。應用程式認證程序每次執行時,都會增加網路要求延遲時間,因此 TTL 較短可能會影響應用程式效能。
    • 配額和費用: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:34.0.0"))

    // 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:19.0.0")
}

3. 初始化 App Check

將下列初始化程式碼加入應用程式,讓它在使用任何其他 Firebase SDK 前優先執行:

Kotlin

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」App Check 部分啟用強制執行功能,Firebase 產品才會要求權杖有效。

監控指標並啟用強制執行功能

不過,啟用強制執行前,請先確認這麼做不會影響現有的合法使用者。另一方面,如果發現應用程式資源有可疑的使用情形,建議盡快啟用強制執行功能。

如要協助做出這項決定,您可以查看所用服務的 App Check 指標:

啟用App Check強制執行功能

瞭解 App Check 對使用者的影響後,即可啟用 App Check 強制執行:

  • 針對 Data ConnectFirebase AI LogicRealtime DatabaseCloud FirestoreCloud StorageAuthentication、Google Identity for iOS、Maps JavaScript API 和 Places API (新版),啟用 App Check 強制執行
  • Cloud Functions 啟用 App Check 強制執行功能。

在偵錯環境中使用 App Check

如果您已為應用程式註冊 App Check,但想在 App Check 通常不會歸類為有效的環境中執行應用程式 (例如開發期間的模擬器,或來自持續整合 (CI) 環境),可以建立應用程式的偵錯版本,使用 App Check 偵錯供應器,而非實際的認證供應器。

請參閱「在 Android 上搭配偵錯供應器使用 App Check」。