איך משתמשים במפתחות API ל-Firebase ומנהלים אותם

מפתח API הוא מחרוזת ייחודית שמשמשת לניתוב בקשות לפרויקט Firebase שלכם כשאתם מבצעים אינטראקציה עם Firebase ועם שירותי Google. בדף הזה מופיע מידע בסיסי על מפתחות API, וגם שיטות מומלצות לשימוש ולניהול של מפתחות API באפליקציות Firebase.

מידע כללי על מפתחות API ו-Firebase

מפתחות API ל-Firebase שונים ממפתחות API רגילים

בניגוד לאופן שבו משתמשים בדרך כלל במפתחות API, מפתחות API לשירותי Firebase לא משמשים לבקרת הגישה למשאבי הקצה. אפשר לעשות זאת רק באמצעות Firebase Security Rules (כדי לקבוע אילו משתמשי קצה יכולים לגשת למשאבים) ו-Firebase App Check (כדי לקבוע אילו אפליקציות יכולות לגשת למשאבים).

בדרך כלל צריך לשמור בקפידה על מפתחות API (לדוגמה, באמצעות שירות של מאגר או הגדרת המפתחות כמשתני סביבה). עם זאת, מותר לכלול מפתחות API לשירותי Firebase בקוד או בקובצי תצורה שהוגשו לבדיקה.

אפשר לכלול בקוד מפתחות API לשירותי Firebase בבטחה, אבל כדאי לבדוק אותם ולהחיל עליהם הגבלות מתאימות.

יצירת מפתחות API

פרויקט Firebase יכול לכלול הרבה מפתחות API, אבל כל מפתח API יכול להיות משויך רק לפרויקט Firebase אחד.

מפתחות API שנוצרים באופן אוטומטי על ידי Firebase לאפליקציות שלכם ב-Firebase

מערכת Firebase יוצרת מפתחות API באופן אוטומטי לפרויקט בכל פעם שאתם מבצעים אחת מהפעולות הבאות:

  • יצירת פרויקט Firebase > Browser key נוצר באופן אוטומטי
  • יצירת אפליקציה ל-Apple ב-Firebase > iOS key נוצרה באופן אוטומטי
  • יצירת אפליקציה ל-Android ב-Firebase > Android key נוצרה באופן אוטומטי

אפשר גם ליצור מפתחות API משלכם במסוף Google Cloud, למשל לצורכי פיתוח או ניפוי באגים. בהמשך הדף מוסבר מתי יכול להיות שנמליץ על כך.

איתור מפתחות ה-API

אפשר להציג ולנהל את כל מפתחות ה-API של הפרויקט בחלונית APIs & Services > Credentials במסוף Google Cloud.

אפשר גם למצוא אילו מפתחות API מותאמים באופן אוטומטי לאפליקציית Firebase במקומות הבאים. כברירת מחדל, כל אפליקציות Firebase בפרויקט לאותה פלטפורמה (Apple לעומת Android לעומת אינטרנט) ישתמשו באותו מפתח 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

מפתחות API משמשים לזיהוי הפרויקט ב-Firebase במהלך האינטראקציה עם שירותי Firebase או Google. באופן ספציפי, הם משמשים לשיוך בקשות API עם הפרויקט שלכם, לצורכי מכסה וחיוב. הם גם שימושיים לגישה לנתונים ציבוריים.

לדוגמה, אפשר להשתמש במפתח API באופן מפורש על ידי העברת הערך שלו לקריאה ל-API ל-REST כפרמטר של שאילתה. בדוגמה הזו מוסבר איך שולחים בקשה ל-Dynamic Links API לקיצורי קישורים:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

כשהאפליקציה שולחת קריאה ל-Firebase API שדורש מפתח API שמסופק על ידי לקוח האינטרנט או הנייד, האפליקציה מחפשת באופן אוטומטי את מפתח ה-API של הפרויקט בקובץ התצורה או באובייקט התצורה של Firebase. עם זאת, אפשר לספק מפתחות API לאפליקציה באמצעות מנגנון אחר, כולל משתני סביבה.

לבדוק את ההגבלות המתאימות ולהחיל אותן על מפתחות ה-API (מומלץ)

אין צורך להתייחס למפתח API לשירותי Firebase כסוד, אבל כדאי לבדוק את ההגבלות והמגבלות ולהחיל אותן כפי שמתואר בקטע הזה.

בדיקת ממשקי ה-API שנוספו באופן אוטומטי לרשימת ההיתרים של מפתחות ה-API של Firebase

כשמערכת Firebase יוצרת מפתח API בפרויקט, אנחנו מוסיפים למפתח הזה באופן אוטומטי את ההגבלות על API. ממשקי ה-API שנוספו לרשימת ההיתרים הזו הם ממשקי API שקשורים ל-Firebase, שדורשים מהלקוח לספק מפתח API יחד עם הקריאה. חשוב לזכור שרוב ממשקי ה-API הנדרשים לשימוש בשירותי Firebase לא צריכים להופיע ברשימת ההיתרים של מפתחות ה-API.

מאחר ש-Firebase מוסיף את ממשקי ה-API הנדרשים לכל שירותי Firebase, רשימת ההיתרים של מפתח API עשויה לכלול ממשקי API של מוצרים שאתם לא משתמשים בהם. אפשר להסיר ממשקי API מרשימת ההיתרים, אבל חשוב מאוד לא להסיר את ממשקי ה-API הנדרשים ל-Firebase ולשירותי Firebase שבהם אתם משתמשים (ראו רשימת ממשקי ה-API שקשורים ל-Firebase שצריכים להופיע ברשימת ההיתרים לכל שירות או מוצר). אחרת, תקבלו שגיאות כשתבצעו קריאות לשירותי Firebase.

צמצום המכסה אם משתמשים ב-Authentication שמבוסס על סיסמה

אם אתם משתמשים ב-Firebase Authentication שמבוסס על סיסמה ומישהו מקבל גישה למפתח ה-API, הוא לא יוכל לגשת למסדי הנתונים או לנתוני Cloud Storage של פרויקט Firebase כל עוד הנתונים האלה מוגנים על ידי Firebase Security Rules. עם זאת, הם יכולים להשתמש במפתח ה-API כדי לגשת לנקודות הקצה של אימות ב-Firebase ולשלוח בקשות אימות לגבי הפרויקט שלכם.

כדי למזער את האפשרות שמישהו ישתמש לרעה במפתח API כדי לנסות לבצע התקפת כוח גס, אפשר להדק את מכסת ברירת המחדל של נקודות הקצה identitytoolkit.googleapis.com כך שתשקף את תחזיות התנועה הרגילות של האפליקציה. חשוב לזכור שאם תגבילו את המכסה הזו והאפליקציה תקבל פתאום משתמשים, יכול להיות שתקבלו שגיאות כניסה עד שתגדילו את המכסה. אפשר לשנות את המכסות של ה-API בפרויקט במסוף Google Cloud.

שימוש במפתחות API נפרדים ומוגבלים לכל שירות שאינו Firebase

בדרך כלל, אין צורך להתייחס למפתחות API המשמשים לשירותי Firebase כסודיים, אבל כדאי לנקוט אמצעי זהירות נוספים לגבי מפתחות API שבהם אתם משתמשים בממשקי API אחרים של Google Cloud.

אם אתם משתמשים ב-Google Cloud API (בכל פלטפורמה) שלא מיועד לשירות או למוצר של Firebase, מומלץ מאוד ליצור מפתחות API נפרדים ומותרים לשימוש עם ממשקי ה-API האלה. הדבר חשוב במיוחד אם ה-API מיועד לשירות Google Cloud שניתן לחיוב.

לדוגמה, אם אתם משתמשים ב-Firebase ML וב-Cloud Vision APIs ב-iOS, עליכם ליצור מפתחות API נפרדים שמיועדים רק לגישה ל-Cloud Vision APIs.

שימוש במפתחות API נפרדים ומקובצים עם הגבלות לממשקי API שאינם של Firebase מאפשר לכם לבצע רוטציה של המפתחות או להחליף אותם לפי הצורך, וגם להוסיף הגבלות נוספות למפתחות ה-API בלי להפריע לשימוש בשירותי Firebase.

שימוש במפתחות API ספציפיים לסביבה (מומלץ)

אם מגדירים פרויקטים שונים ב-Firebase לסביבות שונות, כמו סביבות Staging וייצור, חשוב שכל מופע של האפליקציה יתקשר עם פרויקט Firebase התואם שלו. לדוגמה, מכונה של אפליקציה בסביבת ייצור אף פעם לא צריכה לתקשר עם פרויקט Firebase בסביבת הייצור. המשמעות היא גם שאפליקציית ה-staging צריכה להשתמש במפתחות API שמשויכים לפרויקט Firebase של ה-staging.

כדי לצמצם בעיות בהעלאת שינויים בקוד משלב הפיתוח לשלב ההרצה בסביבה לצורך בדיקה ולשלב הייצור, במקום לכלול מפתחות API בקוד עצמו, אפשר להגדיר אותם כמשתני סביבה או לכלול אותם בקובץ תצורה.

חשוב לזכור שאם אתם משתמשים ב-Firebase Local Emulator Suite לפיתוח יחד עם Firebase ML, עליכם ליצור מפתח API לצורך ניפוי באגים בלבד ולהשתמש בו. ההוראות ליצירת מפתח כזה מפורטות במסמכי התיעוד של Firebase ML.

שאלות נפוצות ופתרון בעיות

שאלות נפוצות

פתרון בעיות