本頁向您展示如何使用自定義 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 的依賴項安卓庫。我們建議使用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 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-ktx") }
通過使用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-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 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.0.1") }
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 與調試提供程序。