本頁將說明如何在 Android 應用程式中使用 App Check 自訂 App Check 供應商。啟用 App Check 時, 可確保只有應用程式可以存取專案的 Firebase 資源。
如果您想將 App Check 與預設的 Play Integrity 供應商搭配使用,請參閱 在 Android 上使用 Play Integrity 啟用 App Check。
事前準備
將 Firebase 新增至您的 Android 專案 (如果您尚未這麼做) 已完成其他驗證步驟
1. 將 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.2.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 程式庫版本。
(替代做法) 新增 Firebase 程式庫依附元件,「不使用」 BoM
如果選擇不使用 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:18.0.0") }
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. 初始化 App Check
將下列初始化程式碼新增至應用程式,讓應用程式在使用前執行 其他 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 程式庫後,即可開始發布 為使用者提供了最新的應用程式
新版用戶端應用程式會開始傳送 App Check 個符記, 但 Firebase 產品不需要權杖 您必須在App Check Firebase 控制台。
監控指標並啟用強制執行功能
不過,啟用強制執行功能之前,請先確認這項操作不會 幹擾現有的合法使用者另一方面,如果您發現 如果您對應用程式資源都很可疑,建議您使用強制執行措施
為做出決定,您可以查看這些廣告主的 App Check 指標 您使用的服務:
- 監控 App Check 個要求指標: Realtime Database、Cloud Firestore、Cloud Storage 和 Authentication (Beta 版)。
- 監控「Cloud Functions」的 App Check 個要求指標。
啟用「App Check」強制執行功能
瞭解 App Check 對使用者的影響,您可以做好準備 下一步,您可以啟用 App Check 強制執行功能:
- 允許強制使用 App Check: Realtime Database、Cloud Firestore、Cloud Storage 和 Authentication (Beta 版)。
- 為 Cloud Functions 啟用 App Check 強制執行功能。
在偵錯環境中使用 App Check
只要在為「App Check」註冊應用程式後, 「App Check」通常不會歸類為有效環境的應用程式。 例如開發期間的模擬器,或從持續整合 (CI) 擷取而來 您就能為應用程式建立偵錯版本,該應用程式會使用 App Check 偵錯提供者而非真正的認證提供者。
請參閱「搭配 Android 偵錯提供者使用 App Check」一文。