درباره استفاده و مدیریت کلیدهای API برای Firebase بیاموزید

کلید API یک رشته منحصر به فرد است که برای هدایت درخواست‌ها به پروژه Firebase شما هنگام تعامل با سرویس‌های Firebase و Google استفاده می‌شود. این صفحه اطلاعات اولیه در مورد کلیدهای API و همچنین بهترین شیوه‌ها برای استفاده و مدیریت کلیدهای API با برنامه‌های Firebase را شرح می‌دهد.

اطلاعات عمومی در مورد کلیدهای API و Firebase

کلیدهای API برای Firebase با کلیدهای API معمولی متفاوت هستند

برخلاف نحوه‌ی معمول استفاده از کلیدهای API، کلیدهای API برای سرویس‌های Firebase برای کنترل دسترسی به منابع backend استفاده نمی‌شوند ؛ این کار فقط با استفاده از Firebase Security Rules (برای کنترل اینکه کدام کاربران نهایی می‌توانند به منابع دسترسی داشته باشند) و Firebase App Check (برای کنترل اینکه کدام برنامه‌ها می‌توانند به منابع دسترسی داشته باشند) قابل انجام است.

معمولاً، شما باید با دقت از کلیدهای API محافظت کنید (برای مثال، با استفاده از یک سرویس vault یا تنظیم کلیدها به عنوان متغیرهای محیطی)؛ با این حال، کلیدهای API برای سرویس‌های Firebase برای قرار دادن در کد یا فایل‌های پیکربندی check-in مشکلی ندارند.

اگرچه کلیدهای API برای سرویس‌های Firebase برای قرار دادن در کد بی‌خطر هستند، اما باید آنها را بررسی کرده و محدودیت‌ها و محدودیت‌های مناسبی را برای آنها اعمال کنید .

ایجاد کلیدهای API

یک پروژه Firebase می‌تواند کلیدهای API زیادی داشته باشد، اما هر کلید API فقط می‌تواند به یک پروژه Firebase مرتبط باشد.

کلیدهای API که به طور خودکار توسط Firebase برای برنامه‌های Firebase شما ایجاد می‌شوند

فایربیس به طور خودکار کلیدهای API را برای پروژه شما ایجاد می‌کند، زمانی که هر یک از موارد زیر را انجام دهید:

  • ایجاد یک پروژه Firebase > ایجاد خودکار Browser key
  • ایجاد یک برنامه اپل Firebase > ایجاد خودکار iOS key
  • ایجاد یک برنامه اندروید Firebase > ایجاد خودکار Android key

همچنین می‌توانید کلیدهای API خودتان را در کنسول Google Cloud ایجاد کنید، مثلاً برای توسعه یا اشکال‌زدایی . در ادامه‌ی این صفحه، درباره‌ی زمان توصیه‌ی این کار بیشتر بدانید.

پیدا کردن کلیدهای API شما

شما می‌توانید تمام کلیدهای API پروژه خود را در پنل APIs & Services > Credentials در کنسول Google Cloud مشاهده و مدیریت کنید.

همچنین می‌توانید در مکان‌های زیر ببینید که کدام کلید API به طور خودکار با یک برنامه Firebase مطابقت دارد . به طور پیش‌فرض، تمام برنامه‌های Firebase پروژه شما برای یک پلتفرم مشابه (اپل، اندروید و وب) از یک کلید API مشابه استفاده می‌کنند.

  • برنامه‌های اپل فایربیس - کلید API منطبق خودکار را در فایل پیکربندی فایربیس، GoogleService-Info.plist ، در فیلد API_KEY پیدا کنید.

  • برنامه‌های اندروید فایربیس - کلید API تطبیق خودکار را در فایل پیکربندی فایربیس، google-services.json ، در فیلد current_key پیدا کنید.

  • برنامه‌های وب فایربیس - کلید API منطبق خودکار را در شیء پیکربندی فایربیس، در فیلد apiKey پیدا کنید.

استفاده از کلید API

کلیدهای API برای Firebase برای شناسایی پروژه Firebase شما هنگام تعامل با سرویس‌های Firebase یا Google استفاده می‌شوند. به طور خاص، از آنها برای مرتبط کردن درخواست‌های API با پروژه شما برای سهمیه‌بندی و صدور صورتحساب استفاده می‌شود. آنها همچنین برای دسترسی به داده‌های عمومی مفید هستند.

برای اکثر توسعه‌دهندگان و موارد استفاده، شما مستقیماً با این کلیدهای API تعامل ندارید. در عوض، وقتی برنامه شما یک API فایربیس را فراخوانی می‌کند که به یک کلید API ارائه شده توسط کلاینت موبایل یا وب نیاز دارد، برنامه شما به طور خودکار به دنبال یک کلید API در پیکربندی فایربیس برنامه شما می‌گردد. این پیکربندی هنگام اتصال برنامه شما به فایربیس به کدبیس برنامه شما اضافه شده است.

توجه داشته باشید که می‌توانید کلید API برنامه خود را با استفاده از مکانیسم‌های متفاوتی مانند گزینه‌های Firebase یا استفاده از متغیرهای محیطی، درون برنامه خود ارائه دهید.

همچنین، برای تعدادی از APIهای REST برای سرویس‌های Firebase، ممکن است لازم باشد مقدار کلید API را به صورت صریح به عنوان پارامتر پرس‌وجو به فراخوانی ارسال کنید. این مثال نشان می‌دهد که چگونه می‌توانید با استفاده از API Firebase Authentication درخواستی ارسال کنید:

https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=API_KEY

بررسی و اعمال محدودیت‌های مناسب برای کلیدهای API (توصیه می‌شود)

اگرچه لازم نیست با کلید API برای سرویس‌های Firebase به عنوان یک راز رفتار کنید، اما باید محدودیت‌ها و ضوابطی را که در این بخش توضیح داده شده است، بررسی و اعمال کنید.

APIهایی که به طور خودکار به لیست مجاز کلیدهای API فایربیس شما اضافه شده‌اند را بررسی کنید.

وقتی فایربیس یک کلید API در پروژه شما ایجاد می‌کند، ما به طور خودکار "محدودیت‌های API" را به آن کلید اضافه می‌کنیم. APIهای اضافه شده به این لیست مجاز، APIهای مرتبط با فایربیس هستند که از کلاینت می‌خواهند یک کلید API را همراه با فراخوانی ارائه دهد. توجه داشته باشید که اکثر APIهای مورد نیاز برای استفاده از سرویس‌های فایربیس در واقع نیازی به قرار گرفتن در لیست مجاز کلیدهای API شما ندارند.

از آنجایی که فایربیس APIهای لازم را برای همه سرویس‌های فایربیس اضافه می‌کند، لیست مجاز برای یک کلید API ممکن است شامل APIهایی برای محصولاتی باشد که شما استفاده نمی‌کنید. می‌توانید APIها را از لیست مجاز حذف کنید، اما باید بسیار مراقب باشید که APIهای مورد نیاز برای فایربیس و سرویس‌های فایربیس مورد استفاده خود را حذف نکنید (به لیست APIهای مرتبط با فایربیس که باید برای هر سرویس/محصول در لیست مجاز باشند مراجعه کنید). در غیر این صورت، هنگام فراخوانی سرویس‌های فایربیس با خطا مواجه خواهید شد.

اگر از Authentication مبتنی بر رمز عبور استفاده می‌کنید، سهمیه را محدودتر کنید

اگر Firebase Authentication مبتنی بر رمز عبور استفاده می‌کنید و شخصی کلید API شما را به دست آورد، تا زمانی که این داده‌ها توسط Firebase Security Rules محافظت شوند، نمی‌توانند به هیچ یک از پایگاه‌های داده یا داده‌های Cloud Storage پروژه Firebase شما دسترسی پیدا کنند. با این حال، آنها می‌توانند از کلید API شما برای دسترسی به نقاط پایانی احراز هویت Firebase استفاده کرده و درخواست‌های احراز هویت را علیه پروژه شما ارسال کنند.

برای کاهش احتمال سوءاستفاده‌ی شخصی از کلید API برای انجام حمله‌ی brute force، می‌توانید سهمیه‌ی پیش‌فرض نقاط پایانی identitytoolkit.googleapis.com را محدود کنید تا منعکس‌کننده‌ی انتظارات ترافیکی عادی برنامه‌ی شما باشد. توجه داشته باشید که اگر این سهمیه را محدود کنید و برنامه‌ی شما ناگهان کاربران بیشتری جذب کند، ممکن است تا زمانی که سهمیه را افزایش دهید، با خطاهای ورود به سیستم مواجه شوید. می‌توانید سهمیه‌های API پروژه‌ی خود را در کنسول Google Cloud تغییر دهید.

برای هر سرویس غیر فایربیس از کلیدهای API جداگانه و محدود استفاده کنید

اگرچه کلیدهای API مورد استفاده برای سرویس‌های Firebase معمولاً نیازی به محرمانه بودن ندارند، اما باید اقدامات احتیاطی بیشتری را در مورد کلیدهای API که با سایر APIهای Google Cloud استفاده می‌کنید، انجام دهید.

اگر از یک API Google Cloud (روی هر پلتفرمی) استفاده می‌کنید که برای سرویس/محصول فایربیس نیست، اکیداً توصیه می‌کنیم کلیدهای API جداگانه و محدود شده‌ای برای استفاده با آن APIها ایجاد کنید. این امر به ویژه در صورتی اهمیت دارد که API برای یک سرویس Google Cloud قابل پرداخت باشد.

برای مثال، اگر از Firebase ML و APIهای Cloud Vision در iOS استفاده می‌کنید، باید کلیدهای API جداگانه‌ای ایجاد کنید که فقط برای دسترسی به APIهای Cloud Vision از آنها استفاده کنید.

با استفاده از کلیدهای API جداگانه و محدود برای APIهای غیر Firebase، می‌توانید در صورت لزوم کلیدها را بچرخانید یا جایگزین کنید و محدودیت‌های بیشتری را به کلیدهای API اضافه کنید بدون اینکه استفاده شما از سرویس‌های Firebase مختل شود.

از کلیدهای API مخصوص محیط استفاده کنید (توصیه می‌شود)

اگر پروژه‌های Firebase مختلفی را برای محیط‌های مختلف، مانند مرحله‌بندی و تولید، راه‌اندازی می‌کنید، مهم است که هر نمونه برنامه با پروژه Firebase مربوطه خود تعامل داشته باشد. به عنوان مثال، نمونه برنامه مرحله‌بندی شما هرگز نباید با پروژه Firebase تولید شما ارتباط برقرار کند. این همچنین بدان معنی است که برنامه مرحله‌بندی شما باید از کلیدهای API مرتبط با پروژه Firebase مرحله‌بندی شما استفاده کند.

برای کاهش مشکلات مربوط به تغییر کد از مرحله توسعه به مرحله اجرا و سپس به مرحله تولید، به جای گنجاندن کلیدهای API در خود کد، یا آنها را به عنوان متغیرهای محیطی تنظیم کنید یا آنها را در یک فایل پیکربندی قرار دهید.

توجه داشته باشید که اگر از Firebase Local Emulator Suite برای توسعه به همراه Firebase ML استفاده می‌کنید، باید یک کلید API مخصوص اشکال‌زدایی ایجاد و استفاده کنید. دستورالعمل‌های ایجاد این نوع کلید در مستندات Firebase ML موجود است.

سوالات متداول و رفع اشکال

سوالات متداول

عیب‌یابی