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