開始在 Android 裝置上透過自訂供應商使用 App Check

本頁將說明如何在 Android 應用程式中使用 App Check 自訂 App Check 供應商。啟用 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)、 新增 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")
}
在尋找 Kotlin 專用的程式庫模組嗎?距離開始還有 2023 年 10 月 (Firebase BoM 32.5.0),Kotlin 和 Java 開發人員皆可 依附於主要程式庫模組 (詳情請參閱 這項計畫的常見問題)。

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」強制執行功能

瞭解 App Check 對使用者的影響,您可以做好準備 下一步,您可以啟用 App Check 強制執行功能:

在偵錯環境中使用 App Check

只要在為「App Check」註冊應用程式後, 「App Check」通常不會歸類為有效環境的應用程式。 例如開發期間的模擬器,或從持續整合 (CI) 擷取而來 您就能為應用程式建立偵錯版本,該應用程式會使用 App Check 偵錯提供者而非真正的認證提供者。

請參閱「搭配 Android 偵錯提供者使用 App Check」一文。