مفتاح واجهة برمجة التطبيقات عبارة عن سلسلة فريدة تُستخدم لتوجيه الطلبات إلى مشروع Firebase عند التفاعل مع خدمات Firebase و Google. تصف هذه الصفحة المعلومات الأساسية حول مفاتيح واجهة برمجة التطبيقات بالإضافة إلى أفضل الممارسات لاستخدام وإدارة مفاتيح واجهة برمجة التطبيقات مع تطبيقات Firebase.
معلومات عامة حول مفاتيح API و Firebase
تختلف مفاتيح API لـ Firebase عن مفاتيح API النموذجية
على عكس كيفية استخدام مفاتيح واجهة برمجة التطبيقات عادةً ، لا تُستخدم مفاتيح واجهة برمجة التطبيقات لخدمات Firebase للتحكم في الوصول إلى موارد الواجهة الخلفية ؛ لا يمكن القيام بذلك إلا باستخدام قواعد أمان Firebase (للتحكم في المستخدمين الذين يمكنهم الوصول إلى الموارد) وفحص التطبيق (للتحكم في التطبيقات التي يمكنها الوصول إلى الموارد).
عادة ، تحتاج إلى حماية مفاتيح واجهة برمجة التطبيقات بدقة (على سبيل المثال ، باستخدام خدمة المخزن أو تعيين المفاتيح كمتغيرات البيئة) ؛ ومع ذلك ، لا بأس من تضمين مفاتيح API لخدمات Firebase في التعليمات البرمجية أو ملفات التكوين التي تم إيداعها.
على الرغم من أن مفاتيح API لخدمات Firebase آمنة لتضمينها في التعليمات البرمجية ، إلا أن هناك بعض الحالات المحددة التي يجب عليك فيها فرض قيود على مفتاح API الخاص بك ؛ على سبيل المثال ، إذا كنت تستخدم Firebase ML أو Firebase Authentication مع طريقة تسجيل الدخول بالبريد الإلكتروني / كلمة المرور أو Google Cloud API القابلة للفوترة. تعرف على المزيد حول هذه الحالات لاحقًا في هذه الصفحة.
إنشاء مفاتيح API
يمكن أن يحتوي مشروع Firebase على العديد من مفاتيح واجهة برمجة التطبيقات ، ولكن لا يمكن ربط كل مفتاح واجهة برمجة تطبيقات إلا بمشروع Firebase واحد.
يُنشئ Firebase تلقائيًا مفاتيح واجهة برمجة التطبيقات لمشروعك عندما تقوم بأي مما يلي:
- أنشئ مشروع Firebase>
Browser key
الذي تم إنشاؤه تلقائيًا - أنشئ تطبيق Firebase Apple>
iOS key
الذي تم إنشاؤه تلقائيًا - أنشئ تطبيق Firebase Android>
Android key
الذي تم إنشاؤه تلقائيًا
يمكنك أيضًا إنشاء مفاتيح API الخاصة بك في Google Cloud Console ، على سبيل المثال للتطوير أو تصحيح الأخطاء . تعرف على المزيد حول الوقت الذي قد يُوصى فيه بهذا لاحقًا في هذه الصفحة.
البحث عن مفاتيح API الخاصة بك
يمكنك عرض وإدارة جميع مفاتيح واجهة برمجة التطبيقات الخاصة بمشروعك في واجهات برمجة التطبيقات والخدمات> لوحة بيانات الاعتماد في Google Cloud Console.
يمكنك أيضًا العثور على مفتاح واجهة برمجة التطبيقات الذي يتطابق تلقائيًا مع تطبيق Firebase في الأماكن التالية. بشكل افتراضي ، ستستخدم جميع تطبيقات Firebase الخاصة بمشروعك لنفس النظام الأساسي (Apple vs Android vs Web) مفتاح واجهة برمجة التطبيقات نفسه.
Firebase Apple Apps - ابحث عن مفتاح واجهة برمجة التطبيقات المطابق تلقائيًا للتطبيق في ملف تهيئة Firebase ،
، في الحقلGoogleService-Info.plist API_KEY
.تطبيقات Firebase Android - ابحث عن مفتاح API المطابق تلقائيًا للتطبيق في ملف تهيئة Firebase ،
، في الحقلgoogle-services.json current_key
.تطبيقات الويب Firebase - ابحث عن مفتاح واجهة برمجة التطبيقات المطابق تلقائيًا للتطبيق في كائن تكوين
apiKey
، في حقل مفتاح واجهة برمجة التطبيقات.
باستخدام مفتاح API
تُستخدم مفاتيح واجهة برمجة التطبيقات لتحديد مشروع Firebase عند التفاعل مع خدمات Firebase / Google. على وجه التحديد ، يتم استخدامها لربط طلبات واجهة برمجة التطبيقات (API) بمشروعك للحصول على الحصة والفواتير. كما أنها مفيدة للوصول إلى البيانات العامة.
على سبيل المثال ، يمكنك استخدام مفتاح API بشكل صريح عن طريق تمرير قيمته إلى استدعاء REST API كمعامل استعلام. يوضح هذا المثال كيف يمكنك تقديم طلب لواجهة برمجة تطبيقات تقصير الروابط الديناميكية :
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
عندما يجري تطبيقك اتصالاً بواجهة Firebase API ، سيبحث تطبيقك تلقائيًا في ملف / كائن تهيئة Firebase لمفتاح واجهة برمجة تطبيقات مشروعك. ومع ذلك ، يمكنك تعيين مفاتيح API الخاصة بك باستخدام آلية مختلفة ، بما في ذلك متغيرات البيئة.
تطبيق القيود على مفاتيح API (موصى به)
على الرغم من أنه ليس من الضروري التعامل مع مفتاح واجهة برمجة التطبيقات لخدمات Firebase على أنه سر ، إلا أن هناك بعض الحالات المحددة (انظر أدناه) التي قد ترغب فيها في اتخاذ تدابير إضافية لحماية مشروعك من إساءة استخدام مفتاح واجهة برمجة التطبيقات.
قم بتشديد الحصة النسبية إذا كنت تستخدم المصادقة المستندة إلى كلمة المرور
إذا كنت تستخدم مصادقة Firebase المستندة إلى كلمة المرور وحصل شخص ما على مفتاح API الخاص بك ، فلن يتمكن من الوصول إلى أي من قاعدة بيانات مشروع Firebase أو بيانات التخزين السحابي طالما أن هذه البيانات محمية بقواعد أمان Firebase . ومع ذلك ، يمكنهم استخدام مفتاح API الخاص بك للوصول إلى نقاط نهاية مصادقة Firebase وتقديم طلبات المصادقة على مشروعك.
للتخفيف من احتمالية أن يسيء شخص ما استخدام مفتاح واجهة برمجة التطبيقات لمحاولة هجوم القوة الغاشمة ، يمكنك تشديد الحصة الافتراضية لنقاط نهاية identitytoolkit.googleapis.com
لتعكس توقعات حركة المرور العادية لتطبيقك. اعلم أنه إذا شددت هذه الحصة واكتسب تطبيقك مستخدمين فجأة ، فقد تحصل على أخطاء في تسجيل الدخول حتى تزيد الحصة. يمكنك تغيير حصص API الخاصة بمشروعك في Google Cloud Console .
استخدم مفاتيح API منفصلة ومقيدة لأنواع معينة من واجهات برمجة التطبيقات
على الرغم من أن مفاتيح API المستخدمة لخدمات Firebase لا تحتاج عمومًا إلى التعامل معها على أنها سرية ، إلا أنه يجب عليك اتخاذ بعض الاحتياطات الإضافية باستخدام مفاتيح واجهة برمجة التطبيقات المستخدمة لمنح الوصول إلى Google Cloud APIs التي قمت بتمكينها يدويًا.
إذا كنت تستخدم Google Cloud API (على أي نظام أساسي) لم يتم تمكينه تلقائيًا بواسطة Firebase (مما يعني أنك قمت بتمكينه بنفسك) ، فيجب أن تفكر في إنشاء مفاتيح API منفصلة ومقيدة للاستخدام مع واجهات برمجة التطبيقات هذه. هذا مهم بشكل خاص إذا كانت واجهة برمجة التطبيقات لخدمة Google Cloud قابلة للفوترة.
على سبيل المثال ، إذا كنت تستخدم Cloud Vision APIs الخاصة بـ Firebase ML على iOS ، فيجب عليك إنشاء مفاتيح API منفصلة تستخدمها فقط للوصول إلى Cloud Vision APIs.
باستخدام مفاتيح واجهة برمجة تطبيقات منفصلة ومقيدة لواجهات برمجة تطبيقات غير تابعة لـ Firebase ، يمكنك تدوير المفاتيح أو استبدالها عند الضرورة وإضافة قيود إضافية إلى مفاتيح واجهة برمجة التطبيقات دون تعطيل استخدامك لخدمات Firebase.
تصف هذه التعليمات كيفية إنشاء مفتاح API منفصل مقيد لواجهة برمجة تطبيقات وهمية تسمى Super Service API
.
الخطوة 1: قم بتكوين مفاتيح API الحالية الخاصة بك لعدم السماح بالوصول إلى Super Service API
افتح صفحة بيانات الاعتماد في Google Cloud Console. عند المطالبة ، حدد مشروعك.
لكل مفتاح API موجود في القائمة ، افتح عرض التحرير.
في قسم قيود واجهة برمجة التطبيقات ، حدد تقييد المفتاح ، ثم أضف إلى القائمة جميع واجهات برمجة التطبيقات التي تريد أن يكون لمفتاح واجهة برمجة التطبيقات حق الوصول إليها. تأكد من عدم تضمين واجهة برمجة التطبيقات التي تقوم بإنشاء مفتاح API منفصل لها (في هذا المثال ،
Super Service API
).عند تكوين قيود API الخاصة بمفتاح واجهة برمجة التطبيقات ، فإنك تعلن صراحة عن واجهات برمجة التطبيقات التي يمكن للمفتاح الوصول إليها. بشكل افتراضي ، عندما يحتوي قسم قيود واجهة برمجة التطبيقات على عدم تقييد المفتاح المحدد ، يمكن استخدام مفتاح واجهة برمجة التطبيقات للوصول إلى أي واجهة برمجة تطبيقات تم تمكينها للمشروع.
الآن ، لن تمنح مفاتيح API الحالية الخاصة بك حق الوصول إلى Super Service API
، ولكن كل مفتاح سيستمر في العمل لأي واجهات برمجة تطبيقات قمت بإضافتها إلى قائمة قيود API الخاصة به.
الخطوة 2: إنشاء واستخدام مفتاح API جديد للوصول إلى Super Service API
ارجع إلى صفحة بيانات الاعتماد . تأكد من أن مشروع Firebase الخاص بك لا يزال محددًا.
انقر فوق إنشاء بيانات اعتماد> مفتاح API . قم بتدوين مفتاح API الجديد ، ثم انقر فوق مفتاح تقييد .
في قسم قيود واجهة برمجة التطبيقات ، حدد تقييد المفتاح ، ثم أضف إلى القائمة فقط
Super Service API
.يمنح مفتاح API الجديد هذا الوصول إلى
Super Service API
فقط.تكوين التطبيق والخدمات الخاصة بك لاستخدام مفتاح API الجديد.
استخدام مفاتيح API الخاصة بالبيئة (موصى به)
إذا قمت بإعداد مشاريع Firebase مختلفة لبيئات مختلفة ، مثل التدريج والإنتاج ، فمن المهم أن يتفاعل كل مثيل تطبيق مع مشروع Firebase المقابل. على سبيل المثال ، يجب ألا يتحدث مثيل التطبيق المرحلي أبدًا مع مشروع Firebase الخاص بالإنتاج. هذا يعني أيضًا أن تطبيقك المرحلي يحتاج إلى استخدام مفاتيح API المرتبطة بمشروع Firebase المرحلي.
لتقليل المشكلات التي تروج لتغييرات الكود من التطوير إلى التدريج إلى الإنتاج ، بدلاً من تضمين مفاتيح API في الكود نفسه ، قم إما بتعيينها كمتغيرات بيئة أو تضمينها في ملف التكوين.
لاحظ أنه إذا كنت تستخدم Firebase Local Emulator Suite للتطوير جنبًا إلى جنب مع Firebase ML ، فيجب عليك إنشاء واستخدام مفتاح واجهة برمجة التطبيقات لتصحيح الأخطاء فقط. توجد تعليمات إنشاء هذا النوع من المفاتيح في مستندات Firebase ML .
أسئلة وأجوبة
يمكنك استخدام أي من الخيارات التالية لتحديد مفتاح واجهة برمجة التطبيقات المرتبط بتطبيق Firebase:
وحدة تحكم Firebase
انتقل إلى Project settings ، ثم قم بالتمرير لأسفل إلى بطاقة التطبيقات الخاصة بك .
حدد التطبيق الذي تريده.
احصل على ملف / كائن تهيئة Firebase للتطبيق محل الاهتمام ، ثم ابحث عن مفتاح API الخاص به:
Apple : قم بتنزيل
GoogleService-Info.plist
، ثم ابحث عن حقلAPI_KEY
Android : قم بتنزيل
google-services.json
، وابحث عن التكوين الخاص بالتطبيق محل الاهتمام (ابحث عن اسم الحزمة الخاص به) ، ثم ابحث عن الحقلcurrent_key
الويب : حدد خيار التكوين ، ثم ابحث عن حقل
apiKey
Firebase CLI
احصل على ملف / كائن تهيئة Firebase للتطبيق محل الاهتمام عن طريق تشغيل الأمر التالي:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
- PLATFORM (واحدة من):
IOS
|ANDROID
|WEB
- FIREBASE_APP_ID : المعرّف الفريد الذي عيّنه Firebase لتطبيق Firebase ( ابحث عن معرّف التطبيق )
- PLATFORM (واحدة من):
في تهيئة Firebase المطبوعة للتطبيق ، ابحث عن مفتاح API الخاص به:
Apple : ابحث عن حقل
API_KEY
Android : ابحث عن التكوين الخاص بالتطبيق محل الاهتمام (ابحث عن اسم الحزمة الخاص به) ، ثم ابحث عن حقل
current_key
الويب : ابحث عن حقل
apiKey
REST API
احصل على
apiKeyId
(UID) لمفتاح API عن طريق استدعاء نقطة النهاية القابلة للتطبيق للتطبيق محل الاهتمام ، ثم تمرير قيمةapiKeyId
إلى الخطوة التالية.- Apple : اتصل بـ
projects.iosApps.get
- Android : اتصل
projects.androidApps.get
.androidApps.get - الويب : اتصل بـ
projects.webApps.get
- Apple : اتصل بـ
احصل على سلسلة مفاتيح API عن طريق استدعاء
projects.locations.keys.getKeyString
.keyString
هذه هي نفس القيمة التي يمكن العثور عليها في أداة تكوين التطبيق ( Apple | Android | Web ).
تطبيقات Firebase Apple - يحتوي كل تطبيق على ملف تكوين خاص به ويمكن أن يحتوي على مفتاح واجهة برمجة تطبيقات واحد فقط مدرج.
تطبيقات Firebase Android - يتم سرد جميع تطبيقات Android في مشروع Firebase في ملف التكوين نفسه ، ويمكن أن يحتوي كل تطبيق على مفتاح API واحد فقط مدرج. يمكن أن يحتوي كل تطبيق في ملف التكوين هذا على مفتاح مختلف مدرج.
تطبيقات الويب Firebase - يحتوي كل تطبيق على كائن تكوين خاص به ويمكن أن يحتوي على مفتاح واجهة برمجة تطبيقات واحد فقط مدرج.
ومع ذلك ، يمكنك استخدام مفاتيح API متعددة مع تطبيق واحد. يجب عليك توفير آلية لتطبيقك للوصول إلى مفاتيح واجهة برمجة التطبيقات الأخرى ، مثل عبر متغير البيئة. لا يمكن أن تعتمد آلية الوصول إلى مفاتيح API الأخرى على مفاتيح API المدرجة في ملف / كائن تهيئة Firebase.
عند الحصول على ملف / كائن تهيئة Firebase لتطبيقك لأول مرة ، يتحقق Firebase مما إذا كان هناك أي مفاتيح واجهة برمجة تطبيقات حالية في مشروعك تحتوي على "قيود التطبيق" التي تطابق التطبيق (على سبيل المثال ، معرّف حزمة مطابق لتطبيق Apple).
إذا لم يعثر Firebase على أي مفاتيح مقيدة تطابق ، فسيدرج في ملف التكوين / الكائن iOS key
لتطبيقات Apple ، Android key
Android لتطبيقات Android ، Browser key
لتطبيقات الويب (بافتراض وجود هذه المفاتيح و ليس لديها "قيود التطبيق" التي تمنعهم من المطابقة مع هذا التطبيق).
نعم ، يمكنك حذف مفتاح API يدويًا من ملف / كائن التكوين الخاص بك. ومع ذلك ، يجب عليك توفير آلية أخرى لتطبيقك للوصول إلى مفتاح واجهة برمجة التطبيقات (مثل عبر متغير بيئة). خلاف ذلك ، ستفشل أي مكالمات لخدمات Firebase.
نعم ، يمكنك تعديل ملف / كائن تهيئة يدويًا لربط مفتاح API مختلف بتطبيق.
لاحظ أنه إذا أعدت الحصول على ملف / كائن التكوين الخاص بالتطبيق من وحدة التحكم ، فسوف يسرد دائمًا مفاتيح واجهة برمجة التطبيقات التي يطابقها Firebase تلقائيًا مع هذا التطبيق . لذلك ، ستحتاج إلى تكرار عمليات التحرير اليدوية ، حسب الحاجة.
لا ، مفتاح API يحدد فقط مشروعًا معينًا ولا يمكن نقله إلى مشروع آخر.
فيما يلي بعض الأسباب الأكثر شيوعًا لمفاتيح واجهة برمجة التطبيقات غير الصالحة:
يحتوي مفتاح واجهة برمجة التطبيقات على "قيود مفتاح واجهة برمجة التطبيقات" المطبقة عليه مما يجعله غير قابل للتطبيق على التطبيق الذي يحاول استخدام المفتاح ("قيود التطبيق") أو غير قابل للاستخدام لواجهة برمجة التطبيقات التي يتم استدعاؤها ("قيود واجهة برمجة التطبيقات").
تم حذف مفتاح API من المشروع في Google Cloud Console.
لم يتم إنشاء مفتاح API لمعرف المشروع المدرج في ملف / كائن تهيئة Firebase للتطبيق.
تتمثل إحدى طرق إصلاح هذه المشكلة في الحصول على الإصدار المحدث من ملف / كائن تهيئة Firebase لتطبيقك ، ثم استبدال ملف / كائن التكوين القديم بالملف / الكائن المحدث الجديد. قبل إرسال ملف تهيئة للتنزيل أو عرض كائن تكوين في وحدة التحكم ، يتحقق Firebase من تطابق مفتاح (مفاتيح) API المدرجة مع التطبيق (التطبيقات) .
ربما تم تطبيق "قيود واجهة برمجة التطبيقات" على مفتاح واجهة برمجة التطبيقات الذي يستخدمه تطبيق الويب. إذا كانت هذه هي الحالة ، فتأكد من إدراج Firebase Management API في قائمة واجهات برمجة التطبيقات المسموح بها.
إذا حذفت مفتاح API قيد الاستخدام بواسطة أحد التطبيقات ، فستفشل مكالمات واجهة برمجة التطبيقات من هذا التطبيق. قد تتلقى تقارير أو رسائل بريد إلكتروني أو أخطاء تحاول استخدام مفتاح API غير صالح.
يعد حذف مفتاح API أمرًا نهائيًا ولا يمكن التراجع عنه.