یک کلید API یک رشته منحصر به فرد است که برای هدایت درخواستها به پروژه Firebase شما هنگام تعامل با Firebase و سرویسهای Google استفاده میشود. این صفحه اطلاعات اولیه در مورد کلیدهای API و همچنین بهترین روشها برای استفاده و مدیریت کلیدهای API با برنامههای Firebase را توضیح میدهد.
برخلاف نحوه استفاده از کلیدهای API، کلیدهای API برای سرویسهای Firebase برای کنترل دسترسی به منابع پشتیبان استفاده نمیشوند . که فقط با Firebase Security Rules (برای کنترل اینکه کاربران نهایی می توانند به منابع دسترسی داشته باشند) و Firebase App Check (برای کنترل برنامه هایی که می توانند به منابع دسترسی داشته باشند) انجام می شود.
معمولاً باید به دقت از کلیدهای API محافظت کنید (مثلاً با استفاده از سرویس خزانه یا تنظیم کلیدها به عنوان متغیرهای محیطی). با این حال، کلیدهای API برای سرویسهای Firebase برای گنجاندن در کد یا فایلهای پیکربندی تأییدشده مناسب هستند.
اگرچه کلیدهای API برای سرویسهای Firebase برای گنجاندن در کد بیخطر هستند، باید محدودیتها و محدودیتهای مناسب را برای آنها بررسی و اعمال کنید .
یک پروژه Firebase میتواند کلیدهای API زیادی داشته باشد، اما هر کلید API فقط میتواند با یک پروژه Firebase مرتبط باشد.
وقتی یکی از کارهای زیر را انجام می دهید، Firebase به طور خودکار کلیدهای API را برای پروژه شما ایجاد می کند:
- یک پروژه Firebase ایجاد کنید >
Browser keyبه طور خودکار ایجاد شد - یک برنامه Firebase Apple ایجاد کنید >
iOS keyبه طور خودکار ایجاد می شود - یک برنامه Android Firebase ایجاد کنید >
Android keyبه طور خودکار ایجاد شود
همچنین می توانید کلیدهای API خود را در کنسول Google Cloud ایجاد کنید، به عنوان مثال برای توسعه یا اشکال زدایی . در مورد زمانی که ممکن است بعداً در این صفحه توصیه شود، بیشتر بیاموزید.
میتوانید تمام کلیدهای API پروژه خود را در APIs & Services > پنل اعتبارنامهها در کنسول Google Cloud مشاهده و مدیریت کنید.
همچنین در مکانهای زیر میتوانید بیابید کدام کلید API به طور خودکار با برنامه Firebase مطابقت دارد . به طور پیشفرض، همه برنامههای Firebase پروژه شما برای یک پلتفرم (Apple vs Android vs Web) از یک کلید API استفاده میکنند.
Firebase Apple Apps — کلید API منطبقشده را در فایل پیکربندی Firebase،
، در قسمتGoogleService-Info.plist API_KEYپیدا کنید.برنامههای Android Firebase - کلید API منطبقشده را در فایل پیکربندی Firebase،
، در قسمتgoogle-services.json current_keyپیدا کنید.برنامههای وب Firebase - کلید API منطبقشده را در شیء پیکربندی Firebase، در قسمت
apiKeyپیدا کنید.
کلیدهای API برای Firebase برای شناسایی پروژه Firebase شما هنگام تعامل با Firebase یا سرویسهای Google استفاده میشوند. به طور خاص، از آنها برای مرتبط کردن درخواست های API با پروژه شما برای سهمیه و صورتحساب استفاده می شود. آنها همچنین برای دسترسی به داده های عمومی مفید هستند.
برای اکثریت قریب به اتفاق توسعه دهندگان و موارد استفاده، شما مستقیماً با این کلیدهای API تعامل ندارید. در عوض، وقتی برنامه شما با یک API Firebase تماس میگیرد که نیاز به یک کلید API ارائهشده توسط تلفن همراه یا کلاینت وب دارد، برنامه شما بهطور خودکار به دنبال یک کلید API در پیکربندی Firebase برنامه شما میگردد. هنگامی که برنامه خود را به Firebase وصل کردید، این پیکربندی به پایگاه کد برنامه شما اضافه شد.
توجه داشته باشید که میتوانید کلید API برنامه خود را با استفاده از مکانیزم متفاوتی مانند گزینههای Firebase یا استفاده از متغیرهای محیطی در برنامه خود ارائه دهید.
همچنین، برای تعداد کمی از APIهای REST برای سرویسهای Firebase، ممکن است لازم باشد مقدار کلید API را بهعنوان پارامتر پرس و جو به طور صریح به فراخوانی منتقل کنید. این مثال نشان میدهد که چگونه میتوانید با استفاده از Firebase Authentication API درخواست ارسال کنید:
https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=API_KEY
اگرچه لازم نیست یک کلید API برای سرویسهای Firebase به عنوان یک راز تلقی شود، باید محدودیتها و محدودیتهایی را که در این بخش توضیح داده شد، بررسی و اعمال کنید.
هنگامی که Firebase یک کلید API در پروژه شما ایجاد می کند، ما به طور خودکار "محدودیت های API" را به آن کلید اضافه می کنیم. APIهای اضافه شده به این لیست مجاز، APIهای مرتبط با Firebase هستند که از مشتری میخواهند یک کلید API را همراه با تماس ارائه کند. توجه داشته باشید که اکثر API های مورد نیاز برای استفاده از سرویس های Firebase در واقع نیازی به قرار گرفتن در لیست مجاز کلیدهای API شما ندارند.
از آنجایی که Firebase API های لازم را برای همه سرویس های Firebase اضافه می کند، لیست مجاز برای یک کلید API ممکن است شامل API هایی برای محصولاتی باشد که شما استفاده نمی کنید. میتوانید APIها را از لیست مجاز حذف کنید، اما باید بسیار مراقب باشید که APIهای مورد نیاز برای Firebase و سرویسهای Firebase را که استفاده میکنید حذف نکنید ( لیست APIهای مرتبط با Firebase را که باید در لیست مجاز برای هر سرویس/محصول وجود داشته باشند، ببینید). در غیر این صورت، هنگام برقراری تماس با خدمات Firebase با خطا مواجه خواهید شد.
اگر Firebase Authentication مبتنی بر رمز عبور استفاده میکنید و شخصی کلید API شما را در دست میگیرد، تا زمانی که این دادهها توسط Firebase Security Rules محافظت میشوند، نمیتوانند به هیچ یک از پایگاه داده پروژه Firebase یا دادههای Cloud Storage شما دسترسی داشته باشند. با این حال، آنها می توانند از کلید API شما برای دسترسی به نقاط پایانی احراز هویت Firebase و درخواست احراز هویت در برابر پروژه شما استفاده کنند.
برای کاهش احتمال سوء استفاده شخصی از یک کلید API برای حمله brute force، میتوانید سهمیه پیشفرض نقاط انتهایی identitytoolkit.googleapis.com را محدود کنید تا انتظارات ترافیک عادی برنامه شما را منعکس کند. توجه داشته باشید که اگر این سهمیه را تشدید کنید و برنامه شما به طور ناگهانی کاربرانی پیدا کند، ممکن است تا زمانی که سهمیه را افزایش ندهید، با خطاهای ورود مواجه شوید. میتوانید سهمیههای API پروژه خود را در کنسول Google Cloud تغییر دهید.
اگرچه کلیدهای API مورد استفاده برای سرویسهای Firebase معمولاً نیازی به مخفی بودن ندارند، باید اقدامات احتیاطی بیشتری را در مورد کلیدهای API که با سایر APIهای Google Cloud استفاده میکنید، انجام دهید.
اگر از Google Cloud API (در هر پلتفرمی) استفاده میکنید که برای سرویس/محصول Firebase نیست، ما قویاً توصیه میکنیم کلیدهای API مجزا و محدود را برای استفاده با آن APIها ایجاد کنید. اگر API برای سرویس Google Cloud قابل پرداخت باشد، این امر به ویژه مهم است.
به عنوان مثال، اگر از Firebase ML و API های Cloud Vision در iOS استفاده می کنید، باید کلیدهای API جداگانه ای ایجاد کنید که فقط برای دسترسی به API های Cloud Vision استفاده می کنید.
با استفاده از کلیدهای API مجزا و محدود برای APIهای غیر Firebase، میتوانید در صورت لزوم کلیدها را بچرخانید یا جایگزین کنید و بدون ایجاد اختلال در استفاده از سرویسهای Firebase ، محدودیتهای اضافی به کلیدهای API اضافه کنید .
این دستورالعملها نحوه ایجاد یک کلید API مجزا و محدود برای یک API جعلی به نام Super Service API را توضیح میدهند.