إذا كان تطبيق Android يستخدم إحدى واجهات برمجة التطبيقات السحابية الخاصة بـ Firebase ML، عليك اتّخاذ بعض الخطوات الإضافية قبل إطلاق تطبيقك في مرحلة الإنتاج لمنع الوصول غير المصرّح به إلى واجهة برمجة التطبيقات.
بالنسبة إلى تطبيقاتك المتاحة للجميع، عليك التأكّد من أنّ العملاء الذين تمّت المصادقة عليهم فقط يمكنهم الوصول إلى الخدمات السحابية. (يُرجى العِلم أنّه لا يمكن المصادقة باستخدام الطريقة الموضّحة إلا على الأجهزة غير المجذَّرة).
بعد ذلك، عليك إنشاء مفتاح واجهة برمجة تطبيقات مخصّص لتصحيح الأخطاء فقط، ويمكنك استخدامه لتسهيل عملية الاختبار والتطوير.
1. تسجيل تطبيقاتك العلنية في Firebase
عليك أولاً تسجيل تطبيقاتك المتاحة للجميع في Firebase.
تأكَّد من توفّر توقيعات SHA-1 لتطبيقك. راجِع مقالة مصادقة عميلك للتعرّف على كيفية إجراء ذلك.
انتقِل إلى Firebase، ثم انقر على علامة التبويب الإعدادات.
إعدادات المشروع في وحدة تحكّمانتقِل للأسفل إلى بطاقة تطبيقاتك، ثم اختَر تطبيق Android.
أضِف توقيع SHA-1 لتطبيقك إلى معلومات تطبيقك.
2- تحديد نطاق مفاتيح واجهة برمجة التطبيقات
بعد ذلك، اضبط مفاتيح واجهة برمجة التطبيقات الحالية لمنع الوصول إلى Cloud Vision API باتّباع الخطوات التالية:
افتح صفحة بيانات الاعتماد في Google Cloud. اختَر مشروعك عندما يُطلب منك ذلك.
بالنسبة إلى كل مفتاح حالي لواجهة برمجة التطبيقات في القائمة، افتح طريقة عرض التعديل.
في قسم قيود واجهة برمجة التطبيقات، انقر على تقييد المفتاح، ثم أضِف إلى القائمة جميع واجهات برمجة التطبيقات التي تريد أن يتمكّن مفتاح واجهة برمجة التطبيقات من الوصول إليها. احرص على عدم تضمين Cloud Vision API.
عند ضبط قيود واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات، فإنّك تحدّد بشكل صريح واجهات برمجة التطبيقات التي يمكن للمفتاح الوصول إليها. تلقائيًا، عندما يكون الخيار عدم تقييد المفتاح محدّدًا في قسم قيود واجهة برمجة التطبيقات، يمكن استخدام مفتاح واجهة برمجة التطبيقات للوصول إلى أي واجهة برمجة تطبيقات مفعَّلة للمشروع.
لن تمنح مفاتيح واجهة برمجة التطبيقات الحالية إذن الوصول إلى خدمات تعلُّم الآلة على السحابة الإلكترونية، ولكن سيستمر عمل كل مفتاح مع أي واجهات برمجة تطبيقات أضفتها إلى قائمة قيود واجهة برمجة التطبيقات.
يُرجى العِلم أنّه في حال تفعيل أي واجهات برمجة تطبيقات إضافية في المستقبل، عليك إضافتها إلى قائمة القيود المفروضة على واجهة برمجة التطبيقات لمفتاح واجهة برمجة التطبيقات المعنيّ.
3- إنشاء مفتاح واجهة برمجة تطبيقات مخصّص لتصحيح الأخطاء واستخدامه
أخيرًا، أنشئ مفتاح واجهة برمجة تطبيقات جديدًا لاستخدامه في التطوير فقط. يمكن أن يستخدم Firebase ML مفتاح واجهة برمجة التطبيقات هذا للوصول إلى خدمات Google Cloud في البيئات التي لا يمكن فيها مصادقة التطبيق، مثلاً عند تشغيله على المحاكيات.
أنشئ مفتاح واجهة برمجة تطبيقات جديدًا لاستخدامه في التطوير:
افتح صفحة بيانات الاعتماد في Google Cloud. اختَر مشروعك عندما يُطلب منك ذلك.
انقر على إنشاء بيانات اعتماد > مفتاح واجهة برمجة التطبيقات ودوِّن مفتاح واجهة برمجة التطبيقات الجديد. يسمح هذا المفتاح بالوصول إلى واجهة برمجة التطبيقات من التطبيقات غير المصادَق عليها، لذا يجب الحفاظ على سرية هذا المفتاح.
لضمان عدم تسرُّب مفتاح واجهة برمجة التطبيقات الجديد المخصّص لتصحيح الأخطاء مع تطبيقك الذي تم إصداره، حدِّد مفتاح واجهة برمجة التطبيقات المخصّص لتصحيح الأخطاء في ملف بيان Android الذي يتم استخدامه فقط في إصدارات تصحيح الأخطاء:
إذا لم يكن لديك بيان تصحيح أخطاء، أنشئ واحدًا بالنقر على ملف (File) > جديد (New) > غير ذلك (Other) > ملف بيان Android (Android Manifest File) واختَر
debug
من مجموعات المصادر المستهدَفة.في بيان تصحيح الأخطاء، أضِف التعريف التالي:
<application> <meta-data android:name="com.firebase.ml.cloud.ApiKeyForDebug" android:value="
your-debug-api-key " /> </application>
في تطبيقك، اضبط Firebase ML لاستخدام ميزة مطابقة الملف المرجعي للشهادة من أجل مصادقة العميل في الإصدار العلني، واستخدِم مفاتيح واجهة برمجة التطبيقات، أي مفتاح تصحيح الأخطاء، في إصدارات تصحيح الأخطاء فقط:
val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder() if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch() } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f) // ... // And lastly: val options = optionsBuilder.build() FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)
FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder = new FirebaseVisionCloudImageLabelerOptions.Builder(); if (!BuildConfig.DEBUG) { // Requires physical, non-rooted device: optionsBuilder.enforceCertFingerprintMatch(); } // Set other options. For example: optionsBuilder.setConfidenceThreshold(0.8f); // ... // And lastly: FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build(); FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);
الخطوات التالية
راجِع قائمة التحقّق من الإطلاق للحصول على معلومات حول إعداد تطبيقك للإطلاق عند استخدام ميزات Firebase الأخرى.