توضّح لك هذه الصفحة كيفية تفعيل App Check في تطبيق Android باستخدام موفّر App Check المخصّص. عند تفعيل "App Check"، يساعد ذلك في ضمان أنّه بإمكان تطبيقك فقط الوصول إلى موارد Firebase الخاصة بمشروعك.
إذا أردت استخدام App Check مع موفّر Play Integrity التلقائي، يُرجى الاطّلاع على مقالة تفعيل App Check مع Play Integrity على Android.
قبل البدء
أضِف Firebase إلى مشروع Android إذا لم يسبق لك إجراء ذلك.
1. إضافة مكتبة App Check إلى تطبيقك
في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً<project>/<app-module>/build.gradle.kts أو
<project>/<app-module>/build.gradle)،
أضِف الاعتمادية لمكتبة App Check على Android. ننصح باستخدام
Firebase Android BoM
للتحكّم في إصدارات المكتبة.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.2")) // 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:20.0.0") }
2. تنفيذ واجهات App Check
أولاً، عليك إنشاء فئات تنفّذ واجهتَي AppCheckProvider وAppCheckProviderFactory.
يجب أن تتضمّن فئة AppCheckProvider طريقة getToken() تجمع أي معلومات يطلبها موفّر App Check المخصّص كدليل على الأصالة، وترسلها إلى خدمة الحصول على الرموز المميّزة مقابل رمز App Check المميّز. تعالج حزمة تطوير البرامج (SDK) لـ App Check تخزين الرموز المميّزة مؤقتًا، لذا احصل دائمًا على رمز مميّز جديد في عملية تنفيذ getToken().
Kotlin
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
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
أضِف رمز الإعداد التالي إلى تطبيقك لكي يتم تشغيله قبل استخدام أي حزم تطوير برامج (SDK) أخرى لمنصّة Firebase:
Kotlin
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، ولكن لن تتطلّب منتجات Firebase أن تكون الرموز المميّزة صالحة إلى أن يتم تفعيل إجراء التنفيذ في قسم App Check من وحدة تحكُّم Firebase.
مراقبة المقاييس وتفعيل إجراءات التنفيذ
قبل تفعيل إجراءات التنفيذ، عليك التأكّد من أنّ ذلك لن يؤدي إلى تعطيل المستخدمين الشرعيين الحاليين. من ناحية أخرى، إذا لاحظت استخدامًا مريبًا لموارد تطبيقك، قد تحتاج إلى تفعيل إجراء التنفيذ في وقت أقرب.
للمساعدة في اتخاذ هذا القرار، يمكنك الاطّلاع على مقاييس App Check للخدمات التي تستخدمها:
- تتبُّع مقاييس طلبات App Check لكل من Firebase AI Logic وSQL Connect وRealtime Database وCloud Firestore وCloud Storage وAuthentication وGoogle Identity لنظام التشغيل iOS وMaps JavaScript API وPlaces API (الإصدار الجديد).
- تتبُّع مقاييس طلبات "App Check" في "Cloud Functions"
تفعيل إجراءات التنفيذ في App Check
عندما تفهم كيف سيؤثر App Check في المستخدمين وتكون مستعدًا للمتابعة، يمكنك تفعيل إجراءات تنفيذ App Check:
- تفعيل إجراء التنفيذ في App Check لكل من Firebase AI Logic وSQL Connect وRealtime Database وCloud Firestore وCloud Storage وAuthentication وGoogle Identity لأجهزة iOS وMaps JavaScript API وPlaces API (الإصدار الجديد).
- تفعيل إجراء التنفيذ "App Check" لـ "Cloud Functions"
استخدام App Check في بيئات تصحيح الأخطاء
إذا أردت تشغيل تطبيقك في بيئة لا يصنّفها App Check عادةً على أنّها صالحة، مثل محاكي أثناء عملية التطوير أو من بيئة دمج مستمر (CI)، وذلك بعد تسجيل تطبيقك في App Check، يمكنك إنشاء إصدار مخصص لتصحيح الأخطاء من تطبيقك يستخدم مقدّم خدمة تصحيح الأخطاء App Check بدلاً من مقدّم خدمة مصادقة حقيقي.
يُرجى الاطّلاع على مقالة استخدام App Check مع مقدّم خدمة تصحيح الأخطاء على Android.