Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

حماية بيانات اعتماد Cloud لتطبيق Firebase ML Android

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

إذا كان تطبيق Android الخاص بك يستخدم إحدى واجهات برمجة التطبيقات السحابية لـ Firebase ML ، قبل بدء تشغيل تطبيقك في الإنتاج ، يجب عليك اتخاذ بعض الخطوات الإضافية لمنع الوصول غير المصرح به إلى واجهة برمجة التطبيقات.

بالنسبة لتطبيقات الإنتاج الخاصة بك ، ستضمن أن العملاء المعتمدين فقط هم من يمكنهم الوصول إلى الخدمات السحابية. (لاحظ أن الأجهزة التي لا تحتوي على جذر فقط هي التي يمكنها المصادقة باستخدام الطريقة الموضحة.)

بعد ذلك ، ستقوم بإنشاء مفتاح API للتصحيح فقط يمكنك استخدامه للراحة أثناء الاختبار والتطوير.

1. سجّل تطبيقات الإنتاج في Firebase

أولاً ، سجّل تطبيقات الإنتاج في Firebase.

  1. تأكد من أن لديك توقيعات SHA-1 لتطبيقك. راجع مصادقة العميل لمعرفة كيفية القيام بذلك.

  2. انتقل إلى المشروع الخاصة بك في وحدة تحكم Firebase ، ثم حدد علامة التبويب " الإعدادات ".

  3. قم بالتمرير لأسفل إلى بطاقة التطبيقات الخاصة بك ، ثم حدد تطبيق Android الخاص بك.

  4. أضف توقيع SHA-1 لتطبيقك إلى معلومات التطبيق.

2. تقييد نطاق مفاتيح API الخاصة بك

بعد ذلك ، قم بتكوين مفاتيح API الحالية الخاصة بك لعدم السماح بالوصول إلى Cloud Vision API:

  1. افتح صفحة بيانات الاعتماد في Google Cloud Console. عند المطالبة ، حدد مشروعك.

  2. لكل مفتاح API موجود في القائمة ، افتح عرض التحرير.

  3. في قسم قيود واجهة برمجة التطبيقات ، حدد تقييد المفتاح ، ثم أضف إلى القائمة جميع واجهات برمجة التطبيقات التي تريد أن يكون لمفتاح واجهة برمجة التطبيقات حق الوصول إليها. تأكد من عدم تضمين Cloud Vision API.

    عند تكوين قيود API الخاصة بمفتاح واجهة برمجة التطبيقات ، فإنك تعلن صراحة عن واجهات برمجة التطبيقات التي يمكن للمفتاح الوصول إليها. بشكل افتراضي ، عندما يحتوي قسم قيود واجهة برمجة التطبيقات على عدم تقييد المفتاح المحدد ، يمكن استخدام مفتاح واجهة برمجة التطبيقات للوصول إلى أي واجهة برمجة تطبيقات تم تمكينها للمشروع.

الآن ، لن تمنح مفاتيح API الحالية الخاصة بك الوصول إلى خدمات التعلم السحابي ، ولكن كل مفتاح سيستمر في العمل لأي واجهات برمجة تطبيقات قمت بإضافتها إلى قائمة قيود API الخاصة به.

لاحظ أنه إذا قمت بتمكين أي واجهات برمجة تطبيقات إضافية في المستقبل ، فيجب عليك إضافتها إلى قائمة قيود واجهة برمجة التطبيقات لمفتاح API القابل للتطبيق.

3. إنشاء واستخدام مفتاح API للتصحيح فقط

أخيرًا ، قم بإنشاء مفتاح API جديد لاستخدامه فقط من أجل التطوير. يمكن لـ Firebase ML استخدام مفتاح API هذا للوصول إلى خدمات Google Cloud في البيئات التي لا يمكن فيها مصادقة التطبيق ، مثل عند التشغيل على المحاكيات.

  1. أنشئ مفتاح API جديدًا لاستخدامه في التطوير:

    1. افتح صفحة بيانات الاعتماد في Google Cloud Console. عند المطالبة ، حدد مشروعك.

    2. انقر فوق إنشاء بيانات اعتماد> مفتاح API ولاحظ مفتاح API الجديد. يتيح هذا المفتاح الوصول إلى واجهة برمجة التطبيقات من التطبيقات غير المصادق عليها ، لذا حافظ على سرية هذا المفتاح .

  2. لضمان عدم تسريب مفتاح واجهة برمجة التطبيقات لتصحيح الأخطاء الجديد مع تطبيقك الذي تم إصداره ، حدد مفتاح واجهة برمجة التطبيقات لتصحيح الأخطاء في ملف بيان Android المستخدم فقط لإصدارات تصحيح الأخطاء:

    1. إذا لم يكن لديك بيان تصحيح بالفعل ، فأنشئ بيانًا بالنقر فوق ملف> جديد> آخر> ملف بيان Android وتحديد debug من مجموعات المصدر الهدف.

    2. في بيان التصحيح ، أضف التصريح التالي:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. في تطبيقك ، هيئ Firebase ML لاستخدام مطابقة بصمة الشهادة لمصادقة عميلك في الإنتاج واستخدام مفاتيح واجهة برمجة التطبيقات - مفتاح التصحيح - فقط في إصدارات التصحيح:

    Java

    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);

    Kotlin+KTX

    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)

الخطوات التالية

راجع قائمة التحقق من التشغيل للحصول على معلومات حول إعداد تطبيقك للتشغيل عند استخدام ميزات Firebase الأخرى.