يمكنك استخدام App Check لحماية موارد الخلفية المخصّصة غير التابعة لـ Google في تطبيقك، مثل الخلفية المستضافة ذاتيًا. لإجراء ذلك، عليك تنفيذ كلا الإجراءَين التاليَين:
- عدِّل برنامج تطبيقك لإرسال رمز مميّز من خدمة App Check مع كل طلب إلى الخلفية، كما هو موضّح في هذه الصفحة.
- عدِّل الخلفية لطلب رمز مميّز صالح من خدمة App Check مع كل طلب، كما هو موضّح في مقالة التحقّق من الرموز المميّزة من خدمة App Check من خلفية مخصّصة.
قبل البدء
أضِف App Check إلى تطبيقك باستخدام إما موفّر Play Integrity التلقائي أو موفّر مخصّص .
إرسال الرموز المميّزة App Check مع طلبات الخلفية
لضمان تضمين طلبات الخلفية رمزًا مميّزًا صالحًا وغير منتهي الصلاحية من خدمة App Check،
عليك تضمين كل طلب في استدعاء للدالة getAppCheckToken(). ستعيد مكتبة App Check
إنشاء الرمز المميّز إذا لزم الأمر، ويمكنك الوصول إليه في
مستمع النجاح للطريقة.
بعد الحصول على رمز مميّز صالح، أرسِله مع الطلب إلى الخلفية. يعود إليك تحديد الطريقة التي تريد استخدامها، ولكن لا تُرسِل App Check الرموز المميّزة كجزء من عناوين URL، بما في ذلك في مَعلمات طلب البحث، لأنّ ذلك يعرّضها لخطر التسريب والاعتراض غير المقصودَين. النهج المقترَح هو إرسال الرمز المميّز في عنوان HTTP مخصّص.
على سبيل المثال، إذا كنت تستخدم 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); // ... } }); } }
ميزة الحماية من إعادة التشغيل (إصدار تجريبي)
عند إرسال طلب إلى نقطة نهاية فعّلت فيها ميزة
الحماية من إعادة التشغيل،
عليك تضمين الطلب في استدعاء للدالة getLimitedUseAppCheckToken() بدلاً من
getAppCheckToken():
Kotlin
Firebase.appCheck.limitedUseAppCheckToken.addOnSuccessListener { // ... }
Java
FirebaseAppCheck.getInstance() .getLimitedUseAppCheckToken().addOnSuccessListener( new OnSuccessListener<AppCheckToken>() { @Override public void onSuccess(AppCheckToken appCheckToken) { String token = appCheckToken.getToken(); // ... } } );