Bạn có thể sử dụng App Check để bảo vệ các tài nguyên phụ trợ tuỳ chỉnh không phải của Google cho ứng dụng của mình, chẳng hạn như chương trình phụ trợ tự lưu trữ. Để làm như vậy, bạn cần thực hiện cả hai việc sau:
- Sửa đổi ứng dụng khách để gửi mã thông báo App Check cùng với mỗi yêu cầu đến chương trình phụ trợ, như mô tả trên trang này.
- Sửa đổi chương trình phụ trợ để yêu cầu mã thông báo App Check hợp lệ với mọi yêu cầu, như mô tả trong bài viết Xác minh mã thông báo App Check từ chương trình phụ trợ tuỳ chỉnh.
Trước khi bắt đầu
Thêm App Check vào ứng dụng của bạn bằng cách sử dụng nhà cung cấp Play Integrity mặc định hoặc nhà cung cấp tuỳ chỉnh.
Gửi mã thông báo App Check bằng các yêu cầu phụ trợ
Để đảm bảo các yêu cầu phụ trợ của bạn bao gồm mã thông báo App Check hợp lệ, chưa hết hạn,
hãy gói từng yêu cầu trong một lệnh gọi đến getAppCheckToken(). Thư viện App Check
sẽ làm mới mã thông báo nếu cần và bạn có thể truy cập vào mã thông báo trong
trình nghe thành công của phương thức.
Sau khi có mã thông báo hợp lệ, hãy gửi mã thông báo đó cùng với yêu cầu đến chương trình phụ trợ. Bạn có thể tự quyết định cách thực hiện việc này, nhưng đừng gửi App Check mã thông báo dưới dạng một phần của URL, kể cả trong các tham số truy vấn, vì điều này khiến mã thông báo dễ bị rò rỉ và bị chặn do vô tình. Phương pháp được đề xuất là gửi mã thông báo trong một tiêu đề HTTP tuỳ chỉnh.
Ví dụ: nếu bạn sử dụng Retrofit:
Kotlin
class ApiWithAppCheckExample { interface YourExampleBackendService { @GET("yourExampleEndpoint") fun exampleData( @Header("X-Firebase-AppCheck") appCheckToken: String, ): Call<List<String>> } var yourExampleBackendService: YourExampleBackendService = Retrofit.Builder() .baseUrl("https://yourbackend.example.com/") .build() .create(YourExampleBackendService::class.java) fun callApiExample() { Firebase.appCheck.getAppCheckToken(false).addOnSuccessListener { appCheckToken -> val token = appCheckToken.token val apiCall = yourExampleBackendService.exampleData(token) // ... } } }
Java
public class ApiWithAppCheckExample { private interface YourExampleBackendService { @GET("yourExampleEndpoint") Call<List<String>> exampleData( @Header("X-Firebase-AppCheck") String appCheckToken); } YourExampleBackendService yourExampleBackendService = new Retrofit.Builder() .baseUrl("https://yourbackend.example.com/") .build() .create(YourExampleBackendService.class); public void callApiExample() { FirebaseAppCheck.getInstance() .getAppCheckToken(false) .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(@NonNull AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); Call<List<String>> apiCall = yourExampleBackendService.exampleData(token); // ... } }); } }
Chống phát lại (thử nghiệm)
Khi đưa ra yêu cầu đến một điểm cuối mà bạn đã bật tính năng
chống phát lại,
hãy gói yêu cầu trong một lệnh gọi đến getLimitedUseAppCheckToken() thay vì
getAppCheckToken():
Kotlin
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );