Bắt đầu sử dụng Kiểm tra ứng dụng với nhà cung cấp tùy chỉnh trên Android

Trang này chỉ cho bạn cách bật Kiểm tra ứng dụng trong ứng dụng Android, sử dụng nhà cung cấp Kiểm tra ứng dụng tùy chỉnh của bạn . Khi bật Kiểm tra ứng dụng, bạn giúp đảm bảo rằng chỉ ứng dụng của bạn mới có thể truy cập tài nguyên Firebase của dự án.

Nếu bạn muốn sử dụng Kiểm tra ứng dụng với nhà cung cấp tính toàn vẹn của Play mặc định, hãy xem Bật Kiểm tra ứng dụng với tính toàn vẹn của Play trên Android .

Trước khi bắt đầu

1. Thêm thư viện Kiểm tra ứng dụng vào ứng dụng của bạn

Trong tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle ), hãy thêm phần phụ thuộc cho Kiểm tra ứng dụng Thư viện Android. Chúng tôi khuyên bạn nên sử dụng Firebase Android BoM để kiểm soát việc lập phiên bản thư viện.

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")
}

Bằng cách sử dụng Firebase Android BoM , ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android Firebase.

(Thay thế) Thêm phụ thuộc thư viện Firebase mà không cần sử dụng BoM

Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.

Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự khuyên bạn nên sử dụng BoM để quản lý các phiên bản thư viện, điều này đảm bảo rằng tất cả các phiên bản đều tương thích.

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")
}

Bằng cách sử dụng Firebase Android BoM , ứng dụng của bạn sẽ luôn sử dụng các phiên bản tương thích của thư viện Android Firebase.

(Thay thế) Thêm phụ thuộc thư viện Firebase mà không cần sử dụng BoM

Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phụ thuộc của nó.

Lưu ý rằng nếu bạn sử dụng nhiều thư viện Firebase trong ứng dụng của mình, chúng tôi thực sự khuyên bạn nên sử dụng BoM để quản lý các phiên bản thư viện, điều này đảm bảo rằng tất cả các phiên bản đều tương thích.

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. Triển khai giao diện Kiểm tra ứng dụng

Trước tiên, bạn cần tạo các lớp triển khai giao diện AppCheckProviderAppCheckProviderFactory .

Lớp AppCheckProvider của bạn phải có phương thức getToken() , phương thức này thu thập bất kỳ thông tin nào mà nhà cung cấp Kiểm tra ứng dụng tùy chỉnh của bạn yêu cầu làm bằng chứng xác thực và gửi thông tin đó đến dịch vụ thu thập mã thông báo của bạn để đổi lấy mã thông báo Kiểm tra ứng dụng. SDK Kiểm tra ứng dụng xử lý bộ nhớ đệm mã thông báo, vì vậy, hãy luôn nhận mã thông báo mới khi bạn triển khai 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);
    }
}

Ngoài ra, hãy triển khai lớp AppCheckProviderFactory để tạo các phiên bản triển khai AppCheckProvider của bạn:

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. Khởi tạo Kiểm tra ứng dụng

Thêm mã khởi tạo sau vào ứng dụng của bạn để ứng dụng chạy trước khi bạn sử dụng bất kỳ SDK Firebase nào khác:

Kotlin+KTX

Firebase.initialize(context)
Firebase.appCheck.installAppCheckProviderFactory(
    YourCustomAppCheckProviderFactory(),
)

Java

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

Bước tiếp theo

Sau khi thư viện Kiểm tra ứng dụng được cài đặt trong ứng dụng của bạn, hãy bắt đầu phân phối ứng dụng đã cập nhật cho người dùng của bạn.

Ứng dụng khách được cập nhật sẽ bắt đầu gửi mã thông báo Kiểm tra ứng dụng cùng với mọi yêu cầu mà nó đưa ra cho Firebase, nhưng các sản phẩm Firebase sẽ không yêu cầu mã thông báo hợp lệ cho đến khi bạn bật thực thi trong phần Kiểm tra ứng dụng của bảng điều khiển Firebase.

Giám sát số liệu và cho phép thực thi

Tuy nhiên, trước khi kích hoạt thực thi, bạn nên đảm bảo rằng làm như vậy sẽ không làm gián đoạn người dùng hợp pháp hiện tại của bạn. Mặt khác, nếu bạn thấy việc sử dụng tài nguyên ứng dụng của mình một cách đáng ngờ, bạn có thể muốn kích hoạt thực thi sớm hơn.

Để giúp đưa ra quyết định này, bạn có thể xem chỉ số Kiểm tra ứng dụng cho các dịch vụ bạn sử dụng:

Bật thực thi Kiểm tra ứng dụng

Khi bạn hiểu cách Kiểm tra ứng dụng sẽ ảnh hưởng đến người dùng của mình và bạn đã sẵn sàng tiếp tục, bạn có thể bật thực thi Kiểm tra ứng dụng:

Sử dụng Kiểm tra ứng dụng trong môi trường gỡ lỗi

Nếu sau khi bạn đã đăng ký ứng dụng của mình cho Kiểm tra ứng dụng, bạn muốn chạy ứng dụng của mình trong một môi trường mà Kiểm tra ứng dụng thường không được phân loại là hợp lệ, chẳng hạn như trình mô phỏng trong quá trình phát triển hoặc từ môi trường tích hợp liên tục (CI), bạn có thể tạo bản dựng gỡ lỗi của ứng dụng sử dụng nhà cung cấp gỡ lỗi Kiểm tra ứng dụng thay vì nhà cung cấp chứng thực thực.

Xem Sử dụng Kiểm tra ứng dụng với nhà cung cấp gỡ lỗi trên Android .