本頁向您展示如何使用自訂 App Check 提供者在 Android 應用程式中啟用 App Check。啟用應用程式檢查後,您可以協助確保只有您的應用程式可以存取專案的 Firebase 資源。
如果您想將 App Check 與預設的 Play Integrity 提供者結合使用,請參閱在 Android 上啟用 Play Integrity 的 App Check 。
在你開始之前
1. 將 App Check 庫加入您的應用程式中
在模組(應用程式層級)Gradle 檔案(通常<project>/<app-module>/build.gradle.kts
或<project>/<app-module>/build.gradle
)中,新增 App Check 的依賴項Android 的函式庫。我們建議使用Firebase Android BoM來控制函式庫版本控制。dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.8.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") }
透過使用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:17.1.2") }
2. 實作App Check接口
首先,您需要建立實作AppCheckProvider
和AppCheckProviderFactory
介面的類別。
您的AppCheckProvider
類別必須具有getToken()
方法,該方法收集您的自訂 App Check 提供者所需的任何資訊作為真實性證明,並將其發送到您的令牌獲取服務以換取 App Check 令牌。 App Check SDK 處理令牌緩存,因此始終在getToken()
的實作中取得新令牌。
Kotlin+KTX
class YourCustomAppCheckToken( private val token: String, private val expiration: Long, ) : AppCheckToken() { override fun getToken(): String = token override fun getExpireTimeMillis(): Long = expiration } class YourCustomAppCheckProvider(firebaseApp: FirebaseApp) : AppCheckProvider { override fun getToken(): Task<AppCheckToken> { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. val expMillis = expirationFromServer * 1000L - 60000L // Create AppCheckToken object. val appCheckToken: AppCheckToken = YourCustomAppCheckToken(tokenFromServer, expMillis) return Tasks.forResult(appCheckToken) } }
Java
public class YourCustomAppCheckToken extends AppCheckToken { private String token; private long expiration; YourCustomAppCheckToken(String token, long expiration) { this.token = token; this.expiration = expiration; } @NonNull @Override public String getToken() { return token; } @Override public long getExpireTimeMillis() { return expiration; } } public class YourCustomAppCheckProvider implements AppCheckProvider { public YourCustomAppCheckProvider(FirebaseApp firebaseApp) { // ... } @NonNull @Override public Task<AppCheckToken> getToken() { // Logic to exchange proof of authenticity for an App Check token and // expiration time. // ... // Refresh the token early to handle clock skew. long expMillis = expirationFromServer * 1000L - 60000L; // Create AppCheckToken object. AppCheckToken appCheckToken = new YourCustomAppCheckToken(tokenFromServer, expMillis); return Tasks.forResult(appCheckToken); } }
另外,實作一個AppCheckProviderFactory
類別來建立AppCheckProvider
實作的實例:
Kotlin+KTX
class YourCustomAppCheckProviderFactory : AppCheckProviderFactory { override fun create(firebaseApp: FirebaseApp): AppCheckProvider { // Create and return an AppCheckProvider object. return YourCustomAppCheckProvider(firebaseApp) } }
Java
public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory { @NonNull @Override public AppCheckProvider create(@NonNull FirebaseApp firebaseApp) { // Create and return an AppCheckProvider object. return new YourCustomAppCheckProvider(firebaseApp); } }
3. 初始化應用檢查
將以下初始化程式碼新增至您的應用程式中,以便它在您使用任何其他 Firebase SDK 之前執行:
Kotlin+KTX
Firebase.initialize(context) Firebase.appCheck.installAppCheckProviderFactory( YourCustomAppCheckProviderFactory(), )
Java
FirebaseApp.initializeApp(/*context=*/ context); FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance(); firebaseAppCheck.installAppCheckProviderFactory( new YourCustomAppCheckProviderFactory());
下一步
在您的應用程式中安裝 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 與偵錯提供者。