Firebase is back at Google I/O on May 10! Register now

開始在 Android 上通過自定義提供程序使用 App Check

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

此頁面向您展示如何使用您的自定義 App Check 提供程序在 Android 應用程序中啟用 App Check。當您啟用 App Check 時,您有助於確保只有您的應用可以訪問您項目的 Firebase 資源。

如果您想將 App Check 與默認的 Play Integrity 提供程序一起使用,請參閱在 Android 上啟用 App Check with Play Integrity

在你開始之前

1.將App Check庫添加到您的應用中

在您的模塊(應用級)Gradle 文件(通常是app/build.gradle )中,聲明 App Check Android 庫的依賴項:

Kotlin+KTX

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.1.2'
}

Java

dependencies {
    implementation 'com.google.firebase:firebase-appcheck:16.1.2'
}

2.實現App Check接口

首先,您需要創建實現AppCheckProviderAppCheckProviderFactory接口的類。

您的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 {
        return token
    }

    override fun getExpireTimeMillis(): Long {
        return expiration
    }
}

class YourCustomAppCheckProvider : AppCheckProvider {
    val token: Task<AppCheckToken>
        get() {
            // Logic to exchange proof of authenticity for an App Check token.
            // ...

            // Refresh the token early to handle clock skew.
            val expMillis: Long = expirationFromServer * 1000 - 60000

            // Create AppCheckToken object.
            val appCheckToken: AppCheckToken =
                    YourCustomAppCheckToken(tokenFromServer, expMillis)

            return 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 {
    @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 * 1000 - 60000;

        // Create AppCheckToken object.
        AppCheckToken appCheckToken =
                YourCustomAppCheckToken(tokenFromServer, expMillis);

        return appCheckToken;
    }
}

此外,實現一個AppCheckProviderFactory類來創建AppCheckProvider實現的實例:

Kotlin+KTX

class YourCustomAppCheckProviderFactory : AppCheckProviderFactory {
    fun create(firebaseApp: FirebaseApp): AppCheckProvider {
        // Create and return an AppCheckProvider object.
        return YourCustomAppCheckProvider(firebaseApp)
    }
}

Java

public class YourCustomAppCheckProviderFactory implements AppCheckProviderFactory {
  @Override
  public AppCheckProvider create(FirebaseApp firebaseApp) {
    // Create and return an AppCheckProvider object.
    return new YourCustomAppCheckProvider(firebaseApp);
  }
}

3.初始化App Check

將以下初始化代碼添加到您的應用程序,以便它在您使用任何其他 Firebase SDK 之前運行:

Kotlin+KTX

FirebaseApp.initializeApp(/*context=*/ this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance())

Java

FirebaseApp.initializeApp(/*context=*/ this);
FirebaseAppCheck firebaseAppCheck = FirebaseAppCheck.getInstance();
firebaseAppCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory.getInstance());

下一步

在您的應用程序中安裝 App Check 庫後,開始將更新後的應用程序分發給您的用戶。

更新後的客戶端應用程序將開始發送 App Check 令牌及其向 Firebase 發出的每個請求,但 Firebase 產品不會要求令牌有效,直到您在 Firebase 控制台的 App Check 部分啟用強制執行。

監控指標並啟用強制執行

但是,在您啟用強制執行之前,您應該確保這樣做不會干擾您現有的合法用戶。另一方面,如果您發現對應用資源的可疑使用,您可能希望盡快啟用強制措施。

為幫助做出此決定,您可以查看您使用的服務的 App Check 指標:

啟用 App Check 強制執行

當您了解 App Check 將如何影響您的用戶並準備好繼續操作時,您可以啟用 App Check 強制執行:

在調試環境中使用 App Check

如果在為 App Check 註冊您的應用程序後,您希望在 App Check 通常不會歸類為有效的環境中運行您的應用程序,例如開發期間的模擬器,或來自持續集成 (CI) 環境,您可以創建您的應用程序的調試版本,使用 App Check 調試提供程序而不是真正的證明提供程序。

請參閱將 App Check 與 Android 上的調試提供程序一起使用