מפתח API הוא מחרוזת ייחודית שמשמשת לניתוב בקשות אל Firebase
פרויקט שלכם כשאתם יוצרים אינטראקציה עם Firebase ושירותי Google. בדף הזה מופיע מידע בסיסי על מפתחות API, וגם שיטות מומלצות לשימוש ולניהול של מפתחות API באפליקציות Firebase.
מידע כללי על מפתחות API ו-Firebase
מפתחות API ל-Firebase שונים ממפתחות API רגילים
בניגוד לאופן שבו משתמשים בדרך כלל במפתחות API, מפתחות API לשירותי Firebase הם
לא משמשת לשליטה בגישה למשאבים בקצה העורפי; שאפשר לעשות רק
עם Firebase Security Rules (כדי לקבוע לאילו משתמשי קצה תהיה גישה למשאבים) וגם
Firebase App Check (כדי לקבוע לאילו אפליקציות תהיה גישה למשאבים).
בדרך כלל צריך להגן במהירות על מפתחות API (לדוגמה,
על ידי שימוש בשירות Vault או הגדרת המפתחות כמשתני סביבה), עם זאת,
אפשר לכלול מפתחות API של שירותי Firebase בקוד או בהגדרות לצ'ק-אין
.
אפשר גם למצוא איזה מפתח 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 על ידי העברת הערך שלו ל-REST
קריאה ל-API כפרמטר של שאילתה. בדוגמה הזו מוסבר איך שולחים בקשה ל-Dynamic Links API לקיצורי קישורים:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
כשהאפליקציה שולחת קריאה ל-Firebase API שדורש מפתח API שמסופק על ידי לקוח האינטרנט או הנייד, האפליקציה מחפשת באופן אוטומטי את מפתח ה-API של הפרויקט בקובץ התצורה או באובייקט התצורה של Firebase. אבל אפשר
לספק מפתחות API לאפליקציה באמצעות מנגנון אחר, כולל סביבה
משתנים.
בדיקה והחלה של ההגבלות המתאימות על מפתחות API (מומלץ)
אין צורך להתייחס למפתח API לשירותי Firebase כסוד, אבל כדאי לבדוק את ההגבלות והמגבלות ולהחיל אותן כפי שמתואר בקטע הזה.
בדיקת ממשקי ה-API שנוספו אוטומטית לרשימת ההיתרים של מפתחות Firebase API שלכם
כשמערכת 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 שלכם
הם לא יוכלו לגשת לאף אחד ממסד הנתונים של פרויקט Firebase שלכם.
או נתונים של Cloud Storageכל עוד הנתונים האלה מוגנים
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 ובממשקי API של Cloud Vision ב-iOS,
צריך ליצור מפתחות API נפרדים שבהם משתמשים רק
בשביל גישה לממשקי Cloud Vision API.
באמצעות שימוש במפתחות API נפרדים ומוגבלים לממשקי API שלא שייכים ל-Firebase, אתם יכולים לבצע סבב או
להחליף את המפתחות במקרה הצורך ולהוסיף עוד הגבלות ל-API
מקשים
בלי להפריע לשימוש שלך בשירותי Firebase.
הוראות ליצירת מפתחות ספציפיים ל-API
בהוראות האלה מוסבר איך ליצור מפתח API מוגבל ונפרד
API מזויף שנקרא Super Service API.
שלב 1: מגדירים את מפתחות ה-API הקיימים כך שלא יאפשרו גישה ל-Super Service API
פותחים את הדף Credentials במסוף Google Cloud. כשתתבקשו, בוחרים את הפרויקט.
פותחים את תצוגת העריכה לכל מפתח API קיים ברשימה.
בקטע API restrictions, בוחרים באפשרות Restrict key ומוסיפים לרשימה את כל ממשקי ה-API שרוצים לתת למפתח ה-API גישה אליהם. כדאי לוודא
לא לכלול את ה-API שעבורו אתם יוצרים מפתח API נפרד
(בדוגמה הזו, Super Service API).
כשמגדירים הגבלות על ממשקי API של מפתח API, מצהירים באופן מפורש על ממשקי ה-API שיש למפתח גישה אליהם. כברירת מחדל, כשבקטע API restrictions מסומנת האפשרות Don't restrict key, אפשר להשתמש במפתח API כדי לגשת לכל ממשק API שמופעל בפרויקט.
מעכשיו, מפתחות ה-API הקיימים לא יעניקו גישה אל Super Service API, אבל
כל מפתח ימשיך לפעול בממשקי API שהוספת לו
רשימה של הגבלות על ממשקי API.
שלב 2: יוצרים מפתח API חדש ומשתמשים בו כדי לגשת אל Super Service API
חוזרים לדף Credentials. מוודאים שפרויקט Firebase עדיין נבחר.
לוחצים על Create credentials (יצירת פרטי כניסה) > API key (מפתח API). מציינים את מפתח ה-API החדש ולוחצים על Restrict key.
בקטע API restrictions, בוחרים באפשרות Restrict key, ואז מוסיפים את
מציינים רק את Super Service API.
מפתח ה-API החדש הזה מעניק גישה רק ל-Super Service API.
מגדירים את האפליקציה והשירותים כך שישתמשו במפתח ה-API החדש.
שימוש במפתחות API ספציפיים לסביבה (מומלץ)
אם מגדירים פרויקטים שונים ב-Firebase לסביבות שונות, כמו סביבות Staging וייצור, חשוב שכל מופע של האפליקציה יתקשר עם פרויקט Firebase התואם שלו. לדוגמה, מכונה של אפליקציה בסביבת ייצור אף פעם לא צריכה לתקשר עם פרויקט Firebase בסביבת הייצור. המשמעות היא גם שאפליקציית ה-staging צריכה להשתמש במפתחות API שמשויכים לפרויקט ה-Firebase בסביבת ה-staging.
כדי לצמצם בעיות בהעלאת שינויים בקוד משלב הפיתוח לשלב ההרצה בסביבה לצורך בדיקה ולשלב הייצור, במקום לכלול מפתחות API בקוד עצמו, אפשר להגדיר אותם כמשתני סביבה או לכלול אותם בקובץ תצורה.
חשוב לשים לב שאם משתמשים ב-Firebase Local Emulator Suite לפיתוח לצד
ב-Firebase ML, עליך ליצור מפתח API לניפוי באגים בלבד ולהשתמש בו. ההוראות ליצירת מפתח כזה מפורטות במסמכים של Firebase ML.
שאלות נפוצות ופתרון בעיות
שאלות נפוצות
הם מפתחות API
לשירותי Firebase שמוגבלים כברירת מחדל?
כן, כברירת מחדל, כל מפתחות ה-API שהוקצו אוטומטית על ידי Firebase לשימוש עם כל מפתחות ה-API
ממשקי API שקשורים ל-Firebase
"הגבלות על ממשקי API"
ייושמו באופן אוטומטי. כאן תוכלו לראות את רשימת ממשקי ה-API שקשורים ל-Firebase שמופיעים ברשימת ההיתרים הזו.
ממשקי ה-API שנוספו לרשימת ההיתרים הזו הם ממשקי ה-API שנקראים על ידי שירותי Firebase מ:
את קוד הלקוח ולדרוש מפתחות API לזיהוי הפרויקט ב-Firebase, או
אפליקציה. לתשומת ליבכם: רוב ממשקי ה-API שנדרשים לשימוש בשירותי Firebase לא פועלים
צריכות להיות ברשימת ההיתרים של מפתחות ה-API.
מכיוון שמערכת Firebase מוסיפה את ממשקי ה-API הנדרשים לכל שירותי Firebase,
רשימת ההיתרים של מפתח API עשויה לכלול ממשקי API למוצרים שאתם לא משתמשים בהם. שלך
יכולים להסיר ממשקי API מרשימת ההיתרים, אבל צריך להיזהר מאוד
ממשקי ה-API הנדרשים ל-Firebase ולשירותי Firebase שבהם אתם משתמשים (עיינו
רשימת ממשקי ה-API שקשורים ל-Firebase
צריכות להיות ברשימת ההיתרים של כל שירות או מוצר). אחרת,
תקבל שגיאות בעת ביצוע קריאות לשירותי Firebase.
במהלך מאי 2024, כל מפתחות ה-API הקיימים וללא הגבלה שמערכת Firebase הקצתה בעבר באופן אוטומטי יהיו מוגבלים לרשימת ממשקי ה-API שקשורים ל-Firebaseוכן לכל ממשקי ה-API שהופעלו כרגע בפרויקט.
מפתחות API קיימים ושכבר הוגבלו, ש-Firebase הקצתה להם הרשאות באופן אוטומטי בעבר, לא השתנו.
מפתחות API קיימים שלא הוקצו באופן אוטומטי על ידי Firebase לא השתנו.
איך אפשר לקבוע איזה מפתח API
משויך לאפליקציית Firebase שלי?
אפשר להשתמש באחת מהאפשרויות הבאות כדי לקבוע איזה מפתח API משויך לאפליקציית Firebase:
מסוף Firebase
צריך להיכנס אל settingsהגדרות הפרויקט,
ואז גוללים למטה אל הכרטיס האפליקציות שלך.
בוחרים את האפליקציה הרצויה.
מקבלים את קובץ התצורה או האובייקט של Firebase לאפליקציה הרלוונטית, ואז מחפשים את מפתח ה-API שלה:
Apple: מורידים את GoogleService-Info.plist ומאתרים את השדה API_KEY
Android: מורידים את google-services.json, מחפשים את קובץ התצורה של האפליקציה הרצויה (מחפשים את שם החבילה שלה) ואז מחפשים את השדה current_key.
אינטרנט: בוחרים באפשרות הגדרה ואז מחפשים את השדה apiKey
Firebase CLI
כדי לקבל את קובץ התצורה או את האובייקט של Firebase לאפליקציה הרצויה, מריצים את הקוד
הפקודה הבאה:
בתצורת Firebase המודפסת של האפליקציה, מחפשים את מפתח ה-API שלה:
Apple: מחפשים את השדה API_KEY
Android: איתור ההגדרה של האפליקציה הרצויה (מחפשים את
שם חבילה), ואז מוצאים את השדה current_key
אינטרנט: מחפשים את השדה apiKey
API ל-REST
מקבלים את ה-apiKeyId (ה-UID) של מפתח ה-API על ידי שליחת קריאה ל
את נקודת הקצה הרלוונטית של האפליקציה הרלוונטית, ולאחר מכן מעבירים את
apiKeyId לשלב הבא.
ה-keyString הזה הוא אותו הערך שמופיע בדף האפליקציה
ארטיפקט של הגדרה
(Apple |
Android |
אינטרנט).
האם אפשר
רשומים שני מפתחות API לאותה אפליקציית Firebase בהגדרה של Firebase
לקובץ/לאובייקט?
Firebase Apple Apps — לכל אפליקציה יש קובץ תצורה משלה, שיכול להיות לו רק
רשום מפתח API אחד.
אפליקציות Firebase ל-Android — כל האפליקציות ל-Android בפרויקט Firebase
רשומות באותו קובץ תצורה, ולכל אפליקציה יכול להיות רק מפתח API אחד
רשום. עם זאת, לכל אפליקציה בקובץ התצורה הזה יכול להיות מפתח שונה שמופיע.
אפליקציות אינטרנט של Firebase – לכל אפליקציה יש אובייקט הגדרה משלה ויכול להיות רק
רשום מפתח API אחד.
יחד עם זאת, ניתן להשתמש במספר מפתחות API באפליקציה אחת. עליך לספק
מנגנון שמאפשר לאפליקציה לגשת למפתחות API אחרים, כמו סביבה
מותאם אישית. המנגנון לגישה למפתחות ה-API האחרים פשוט לא תלוי בהם
מפתחות ה-API שרשומים בקובץ או באובייקט ההגדרה של Firebase.
איך Firebase
לדעת איזה מפתח API להתאים לאפליקציה (כמו בהגדרה של Firebase)
קובץ/אובייקט)?
אם מערכת Firebase לא תמצא מפתחות מוגבלים תואמים, היא תופיע ב
קובץ התצורה/האובייקט iOS key של אפליקציות Apple, ה-Android key של
אפליקציות ל-Android והשדה Browser key של אפליקציות אינטרנט (בהנחה שהמפתחות האלה קיימים
הן לא מכילות "הגבלות על אפליקציות". שמונעת מהם להתאים
באפליקציה).
האם אפשר למחוק באופן ידני את מפתח ה-API ואת השדה מקובץ התצורה או מהאובייקט של Firebase?
כן, אפשר למחוק באופן ידני את מפתח ה-API מקובץ התצורה או מהאובייקט. אבל, לפעמים
צריך לספק מנגנון אחר לאפליקציה כדי לגשת למפתח API
(למשל באמצעות משתנה סביבה). אחרת, כל הקריאות לשירותי Firebase ייכשלו.
האם אפשר באופן ידני
לערוך את אובייקט/קובץ התצורה של Firebase עם מפתחות API שונים?
כן, אפשר לערוך באופן ידני קובץ תצורה או אובייקט תצורה כדי לשייך מפתח API אחר לאפליקציה.
האם אפשר להעביר
מפתח API מפרויקט Firebase אחד לפרויקט אחר?
לא, מפתח API מזהה רק פרויקט ספציפי ואי אפשר להעביר אותו לאחר
פרויקט.
מה קורה אם מוחקים מפתח API שמופיע במסוף Google Cloud?
אם מוחקים מפתח API שנמצא בשימוש של אפליקציה מסוימת, ולאחר מכן מוחקים קריאות ל-API מהאפליקציה הזו.
ייכשל. יכול להיות שנשלח לך דוחות, הודעות אימייל או שגיאות שבהם ניסית להשתמש
מפתח API לא תקין.
מחיקת מפתח API היא פעולה סופית ואי אפשר לבטל אותה.
איזה
נדרשים ממשקי API בקטע 'הגבלות על ממשקי API' להוסיף לרשימת ההיתרים מפתח API של Firebase?
במפתח API של Firebase, רק ממשקי ה-API שצריכים להופיע ברשימת ההיתרים 'הגבלות API' של המפתח הם ממשקי ה-API שדורשים מהלקוח לספק מפתח API יחד עם הקריאה. חשוב לזכור שרק מעט ממשקי API שקשורים ל-Firebase כוללים את הדרישה הזו. רוב ממשקי ה-API שקשורים ל-Firebase שמופעלים בפרויקט לא צריכים
בקטע 'הגבלות API' במפתח רשימת היתרים.
* חובה רק אם משתמשים במפתח ה-API של Firebase עם צד שלישי
או גישה ישירה ל-REST לשירות או למוצר של Firebase.
** חובה בגרסאות קודמות של ה-SDK של המוצר. אם אתם משתמשים בגרסה האחרונה של ה-SDK, ה-API לא צריך להופיע ברשימת ההיתרים של המפתח.
פתרון בעיות
איך משתמשים
לתקן שגיאה מסוג API_KEY_SERVICE_BLOCKED או שגיאה 403 אסורה
הבקשות ל-API הזה חסומות?
אם יש לך API_KEY_SERVICE_BLOCKED, כדאי לך לבצע את ההנחיות המפורטות בשאלות הנפוצות האלה.
או שגיאה שנראית כך:
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
סביר להניח שמפתח ה-API שבו האפליקציה משתמשת כדי לקרוא ל-API עבר הגבלות API, ורשימת ההיתרים של המפתח לא כוללת את ה-API הזה.
אם קיבלתם את השגיאה הזו כשאתם מנסים להשתמש בשירות שאינו של Firebase,
מומלץ מאוד ליצור מפתח API חדש במיוחד לשירות הזה,
API. יש להשתמש במפתחות API של Firebase רק לשירותים או למוצרים של Firebase.
מידע נוסף על היצירה
מפתחות API נפרדים ומוגבלים לסוגים ספציפיים של ממשקי API.
איך משתמשים
לתקן את השגיאה? "אחזור מזהה המדידה של אפליקציית Firebase הזו נכשל
השרת".
סביר להניח שמפתח ה-API שמשמש את אפליקציית האינטרנט שלכם כולל
"הגבלות על ממשקי API"
הוחלו עליו. במקרה כזה, אתם צריכים לוודא ש-Firebase Management API
נמצא ברשימת ממשקי ה-API המורשים.
קיבלתי אימייל או שגיאה על כך שמפתח ה-API שלי לא תקין. מה קרה ואיך אפשר לפתור את הבעיה?
ריכזנו כאן כמה מהסיבות הנפוצות ביותר למפתחות API לא חוקיים:
למפתח ה-API יש
"הגבלות על מפתחות API"
הוחלו עליו באופן שלא מאפשר התאמה לאפליקציה שמנסה להשתמש במפתח
("הגבלות על אפליקציות") או לא ניתן לשימוש עבור ה-API שנקרא ("API)
הגבלות").
מפתח ה-API נמחק מהפרויקט במסוף Google Cloud.
מפתח ה-API לא נוצר עבור מזהה הפרויקט שרשום באפליקציה
אובייקט או קובץ תצורה של Firebase.