קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
מפתח 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. כברירת מחדל, כל האפליקציות של Firebase בפרויקט לאותה פלטפורמה (Apple לעומת Android לעומת אינטרנט) ישתמשו באותו מפתח API.
אפליקציות של Firebase ל-Apple – מזהים את מפתח ה-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 link shortener 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 שלכם, הוא לא יוכל לגשת למסד הנתונים או לנתונים של פרויקט Firebase כלשהו Cloud Storageכל עוד הנתונים האלה מוגנים על ידי Firebase Security Rules. עם זאת, הם יכולים להשתמש במפתח ה-API שלכם כדי לגשת לנקודות הקצה של האימות ב-Firebase ולשלוח בקשות אימות לפרויקט שלכם.
כדי לצמצם את הסיכון שמישהו ינצל לרעה מפתח API כדי לנסות לבצע מתקפת כוח ברוטלי, אפשר להקטין את מכסת ברירת המחדל של נקודות הקצה identitytoolkit.googleapis.com כך שתשקף את נפח התנועה הרגיל הצפוי של האפליקציה. חשוב לזכור שאם תקטינו את המכסה הזו והאפליקציה שלכם תזכה לפתע למשתמשים חדשים, יכול להיות שתקבלו שגיאות בכניסה עד שתגדילו את המכסה.
אפשר לשנות את מכסות ה-API של הפרויקט במסוף Google Cloud.
שימוש במפתחות API נפרדים ומוגבלים לכל שירות שאינו Firebase
למרות שבדרך כלל אין צורך להתייחס למפתחות API שמשמשים לשירותי Firebase כאל סוד, כדאי לנקוט אמצעי זהירות נוספים לגבי מפתחות API שבהם אתם משתמשים עם ממשקי Google Cloud API אחרים.
אם אתם משתמשים ב-API Google Cloud (בכל פלטפורמה) שלא מיועד לשירות או למוצר של Firebase, מומלץ מאוד ליצור מפתחות API נפרדים ומוגבלים לשימוש עם ממשקי ה-API האלה. זה חשוב במיוחד אם ה-API מיועד לשירות Google Cloudבתשלום.
לדוגמה, אם אתם משתמשים ב-Firebase ML וב-Cloud Vision APIs ב-iOS, כדאי ליצור מפתחות API נפרדים שבהם תשתמשו רק כדי לגשת ל-Cloud Vision APIs.
שימוש במפתחות 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 של סביבת הייצור. זה גם אומר שאפליקציית הבדיקה צריכה להשתמש במפתחות API שמשויכים לפרויקט הבדיקה ב-Firebase.
כדי לצמצם את הבעיות שעלולות לקרות כשמעבירים שינויים בקוד משלב הפיתוח לשלב ההכנה לשחרור ולשלב הייצור, במקום לכלול את מפתחות ה-API בקוד עצמו, כדאי להגדיר אותם כמשתני סביבה או לכלול אותם בקובץ הגדרות.
שימו לב: אם אתם משתמשים ב-Firebase Local Emulator Suite לפיתוח יחד עם Firebase ML, אתם צריכים ליצור מפתח API לניפוי באגים בלבד ולהשתמש בו. הוראות ליצירת מפתח כזה מופיעות במסמכי Firebase ML.
שאלות נפוצות ופתרון בעיות
שאלות נפוצות
האם מפתחות API לשירותי Firebase מוגבלים כברירת מחדל?
כן, כברירת מחדל, לכל מפתחות ה-API שמערכת Firebase מקצה אוטומטית לשימוש עם ממשקי 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
עוברים אל settingsProject settings (הגדרות הפרויקט) וגוללים למטה אל הכרטיס Your apps (האפליקציות שלך).
בוחרים את האפליקציה הרצויה.
משיגים את קובץ התצורה או האובייקט של Firebase עבור האפליקציה הרלוונטית, ואז מוצאים את מפתח ה-API שלה:
Apple: מורידים את הקובץ GoogleService-Info.plist ואז מחפשים את השדה API_KEY.
Android: מורידים את google-services.json, מחפשים את ההגדרה של האפליקציה הרלוונטית (מחפשים את שם החבילה שלה), ואז מחפשים את השדה current_key.
אינטרנט: בוחרים באפשרות Config ואז מחפשים את השדה apiKey.
Firebase CLI
כדי לקבל את קובץ התצורה או האובייקט של Firebase עבור האפליקציה הרלוונטית, מריצים את הפקודה הבאה:
firebase apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (אחד מהערכים הבאים): IOS | ANDROID | WEB
הערך הזה keyString זהה לערך שמופיע בארטיפקט של הגדרות האפליקציה (Apple | Android | אינטרנט).
האם אפשר להשתמש בשני מפתחות API לאותה אפליקציית Firebase בקובץ או באובייקט ההגדרות של Firebase?
אפליקציות של אפל ב-Firebase – לכל אפליקציה יש קובץ תצורה משלה, ויכול להיות שיופיע בה רק מפתח 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'.
* נדרש רק אם משתמשים במפתח Firebase API עם כלים של צד שלישי או עם גישת REST ישירה לשירות או למוצר Firebase.
** חובה בגרסאות קודמות של ה-SDK של המוצר. אם אתם משתמשים בגרסה האחרונה של ה-SDK, אין צורך להוסיף את ה-API לרשימת ההיתרים של המפתח.
פתרון בעיות
איך אפשר לתקן שגיאה מסוג API_KEY_SERVICE_BLOCKED או Forbidden 403 שמופיעה בהודעה requests to this API are blocked?
אם מופיעה שגיאה או שגיאה שנראית כמו השגיאה הבאה, צריך לפעול לפי ההנחיות שבשאלות הנפוצות האלה: 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. אם זה המצב, צריך לוודא ש-Firebase Management API מופיע ברשימת ממשקי ה-API המותרים.
קיבלתי אימייל או שגיאה שבהם כתוב שמפתח ה-API שלי לא תקין. מה קרה ואיך אפשר לפתור את הבעיה?
אלה כמה מהסיבות הנפוצות ביותר למפתחות API לא תקינים:
למפתח ה-API הוחלו הגבלות על מפתח ה-API, שגורמות לכך שלא ניתן להתאים אותו לאפליקציה שמנסה להשתמש במפתח (הגבלות על אפליקציות) או שלא ניתן להשתמש בו עבור ה-API שאליו מתבצעת הקריאה (הגבלות על API).
מפתח ה-API נמחק מהפרויקט במסוף Google Cloud.
מפתח ה-API לא נוצר עבור מזהה הפרויקט שמופיע בקובץ ההגדרה או באובייקט ההגדרה של Firebase באפליקציה.
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-09-06 (שעון UTC)."],[],[],null,[]]