حماية بيانات اعتماد Google Cloud لتعلُّم الآلة من Firebase
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
إذا كان تطبيق Android يستخدم إحدى واجهات برمجة التطبيقات السحابية الخاصة بـ Firebase ML، عليك اتّخاذ بعض الخطوات الإضافية قبل إطلاق تطبيقك في مرحلة الإنتاج لمنع الوصول غير المصرّح به إلى واجهة برمجة التطبيقات.
بالنسبة إلى تطبيقاتك المتاحة للجميع، عليك التأكّد من أنّ العملاء الذين تمّت المصادقة عليهم فقط يمكنهم الوصول إلى الخدمات السحابية. (يُرجى العِلم أنّه لا يمكن المصادقة باستخدام الطريقة الموضّحة إلا على الأجهزة غير المجذَّرة).
بعد ذلك، عليك إنشاء مفتاح واجهة برمجة تطبيقات مخصّص لتصحيح الأخطاء فقط، ويمكنك استخدامه لتسهيل عملية الاختبار والتطوير.
1. تسجيل تطبيقاتك العلنية في Firebase
عليك أولاً تسجيل تطبيقاتك المتاحة للجميع في Firebase.
تأكَّد من توفّر توقيعات SHA-1 لتطبيقك. راجِع مقالة
مصادقة عميلك
للتعرّف على كيفية إجراء ذلك.
انتقِل إلى settings
إعدادات المشروع في وحدة تحكّم 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 لاستخدام ميزة مطابقة الملف المرجعي للشهادة من أجل مصادقة العميل في الإصدار العلني، واستخدِم مفاتيح واجهة برمجة التطبيقات (مفتاح تصحيح الأخطاء) فقط في إصدارات تصحيح الأخطاء:
Kotlin
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)
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);
الخطوات التالية
راجِع قائمة التحقّق من الإطلاق للحصول على معلومات حول إعداد تطبيقك للإطلاق عند استخدام ميزات Firebase الأخرى.
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-08-21 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-21 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["\u003cbr /\u003e\n\nIf your Android app uses one of Firebase ML's cloud APIs, before you launch your\napp in production, you should take some additional steps to prevent\nunauthorized API access.\n\nFor your production apps, you will ensure that only authenticated clients can\naccess cloud services. (Note that only non-rooted devices can authenticate using\nthe method described.)\n\nThen, you will create a debug-only API key that you can use for convenience\nduring testing and development.\n\n1. Register your production apps with Firebase\n\nFirst, register your production apps with Firebase.\n\n1. Make sure that you have your app's SHA-1 signatures. Refer to\n [Authenticating your client](//developers.google.com/android/guides/client-auth)\n to learn how.\n\n2. Go to your settings\n *Project settings* in the Firebase console, then select the *Settings*\n tab.\n\n3. Scroll down to the *Your apps* card, then select your Android app.\n\n4. Add your app's SHA-1 signature to your app's information.\n\n2. Restrict the scope of your API keys\n\nNext, configure your existing API keys to disallow access to the Cloud Vision\nAPI:\n\n1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n2. For each existing API key in the list, open the editing view.\n\n3. In the *API restrictions* section, select **Restrict key** , then add to the\n list all of the APIs to which you want the API key to have access. Make sure\n to ***not*** include the Cloud Vision API.\n\n When you configure an API key's *API restrictions* , you are explicitly\n declaring the APIs to which the key has access. **By default, when the *API\n restrictions* section has *Don't restrict key* selected, an API key can be\n used to access any API that is enabled for the project.**\n\nNow, your existing API keys will not grant access to cloud ML services, but each\nkey will continue to work for any APIs that you added to its *API restrictions*\nlist.\n\nNote that if you enable any additional APIs in the future, you must add them to\nthe *API restrictions* list for the applicable API key.\n\n3. Create and use a debug-only API key\n\nFinally, create a new API key to be used only for development. Firebase ML can\nuse this API key to access Google Cloud services in environments where app\nauthentication isn't possible, such as when running on emulators.\n\n1. Create a new API key to be used for development:\n\n 1. Open the [Credentials](https://console.cloud.google.com/apis/credentials?project=_) page of the\n Google Cloud console. When prompted, select your project.\n\n 2. Click **Create credentials \\\u003e API key** and take note of the new API\n key. This key allows API access from unauthenticated apps, so\n **keep this key confidential**.\n\n2. To ensure the new debug API key is not leaked with your released app,\n specify the debug API key in an Android manifest file used only for debug\n builds:\n\n 1. If you don't already have a debug manifest, create one by clicking\n **File \\\u003e New \\\u003e Other \\\u003e Android Manifest File** and selecting `debug`\n from the target source sets.\n\n 2. In the debug manifest, add the following declaration:\n\n ```text\n \u003capplication\u003e\n \u003cmeta-data\n android:name=\"com.firebase.ml.cloud.ApiKeyForDebug\"\n android:value=\"your-debug-api-key\" /\u003e\n \u003c/application\u003e\n ```\n3. In your app, configure Firebase ML to use certificate fingerprint matching to\n authenticate your client in production and to use API keys---the debug\n key---only in debug builds:\n\n Kotlin \n\n ```kotlin\n val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch()\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f)\n // ...\n\n // And lastly:\n val options = optionsBuilder.build()\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)https://github.com/firebase/snippets-android/blob/391c1646eacf44d2aab3f76bcfa60dfc6c14acf1/mlkit/app/src/main/java/com/google/firebase/example/mlkit/kotlin/MainActivity.kt#L30-L42\n ```\n\n Java \n\n ```java\n FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =\n new FirebaseVisionCloudImageLabelerOptions.Builder();\n if (!BuildConfig.DEBUG) {\n // Requires physical, non-rooted device:\n optionsBuilder.enforceCertFingerprintMatch();\n }\n\n // Set other options. For example:\n optionsBuilder.setConfidenceThreshold(0.8f);\n // ...\n\n // And lastly:\n FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();\n FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);https://github.com/firebase/snippets-android/blob/391c1646eacf44d2aab3f76bcfa60dfc6c14acf1/mlkit/app/src/main/java/com/google/firebase/example/mlkit/MainActivity.java#L30-L43\n ```\n\nNext steps\n\nSee the [launch checklist](/support/guides/launch-checklist) for information on\npreparing your app to launch when using other Firebase features."]]