קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
מפתח 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.
אפליקציות Firebase ל-Android — מוצאים את מפתח ה-API בהתאמה אוטומטית בקטע
קובץ התצורה של Firebase, google-services.json, בקטע
שדה current_key.
אפליקציות אינטרנט ב-Firebase – מוצאים את מפתח ה-API המותאם אוטומטית ב-Firebase
אובייקט config, בשדה apiKey.
שימוש במפתח API
מפתחות API משמשים לזיהוי פרויקט Firebase בזמן אינטראקציה עם
שירותי Firebase או Google. באופן ספציפי, הן משמשות לשיוך בקשות API
לפרויקט שלכם לצורכי מכסה וחיוב. הן שימושיות גם לצורך גישה
נתונים ציבוריים.
לדוגמה, אפשר להשתמש במפורש במפתח API על ידי העברת הערך שלו ל-REST
קריאה ל-API כפרמטר של שאילתה. הדוגמה הזו מראה איך אפשר לשלוח בקשה
ל
Dynamic Links link ⌘er 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, הוא לא יוכל לגשת למסדי הנתונים או לנתוני Cloud Storage של פרויקט Firebase כל עוד הנתונים האלה מוגנים על ידי Firebase Security Rules. עם זאת, הוא יכול להשתמש במפתח ה-API שלכם כדי לגשת
נקודות הקצה לאימות ב-Firebase ובקשות אימות כנגדן
בפרויקט שלכם.
כדי למנוע את האפשרות שמישהו ישתמש לרעה במפתח API כדי
לנסות לבצע תקיפה מסוג Brute Force, אפשר להגביל את מכסת ברירת המחדל של
identitytoolkit.googleapis.com נקודות קצה (endpoint) שמשקפות את התנועה הרגילה
של הציפיות שלנו מהאפליקציה. חשוב לדעת שאם תגבילו את המכסה הזו ואת האפליקציה שלכם
רווחי משתמשים פתאום, ייתכן שתקבלו שגיאות כניסה עד שתגדילו את המכסה.
תוכלו לשנות את מכסות ה-API בפרויקט שלכם
מסוף Google Cloud.
שימוש במפתחות API נפרדים ומוגבלים לכל שירות שאינו Firebase
למרות שבאופן כללי, לא צריך לטפל במפתחות API שמשמשים לשירותי Firebase
לשמירה על הסוד, עליכם לנקוט אמצעי זהירות נוספים למפתחות API שבהם אתם משתמשים
עם ממשקי API אחרים של Google Cloud.
אם משתמשים ב-API של Google Cloud (בכל פלטפורמה) שלא מיועד ל-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 נבחר מפתח API: ללא הגבלת מפתח
יכולים לגשת לכל API שמופעל בפרויקט.
מעכשיו, מפתחות ה-API הקיימים לא יעניקו גישה אל Super Service API, אבל
כל מפתח ימשיך לפעול בממשקי API שהוספת לו
רשימה של הגבלות על ממשקי API.
שלב 2: יוצרים מפתח API חדש ומשתמשים בו כדי לגשת אל Super Service API
חוזרים אל Credentials
הדף הזה. צריך לוודא שפרויקט Firebase עדיין נבחר.
לוחצים על Create credentials > מפתח API. שימו לב למפתח ה-API החדש, ואז
לוחצים על Restrict key.
בקטע API restrictions, בוחרים באפשרות Restrict key, ואז מוסיפים את
מציינים רק את Super Service API.
מפתח ה-API החדש הזה מעניק גישה רק ל-Super Service API.
מגדירים את האפליקציה והשירותים כך שישתמשו במפתח ה-API החדש.
שימוש במפתחות API שספציפיים לסביבה (מומלץ)
אם מגדירים פרויקטים שונים של Firebase לסביבות שונות, כמו
Staging וייצור, חשוב שכל מופע של אפליקציה יקיים אינטראקציה עם
לפרויקט Firebase המתאים. לדוגמה, המופע של אפליקציית ה-Staging צריך
אף פעם לא מדברים עם פרויקט Firebase לסביבת הייצור. המשמעות היא גם
אפליקציית ה-Staging צריכה להשתמש במפתחות API שמשויכים לפרויקט Firebase ב-Staging.
כדי לצמצם בעיות שמקדמות שינויים בקוד מפיתוח ל-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 apps:sdkconfig PLATFORMFIREBASE_APP_ID
PLATFORM (אחת מתוך): IOS | ANDROID | WEB
FIREBASE_APP_ID: המזהה הייחודי שהוקצה על ידי Firebase עבור
אפליקציית 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 צריכים
נכללות בקטע 'הגבלות על ממשקי API' רשימת היתרים של מפתח Firebase API. חשוב לזכור,
אפשר להשתמש במפתחות API של Firebase רק לשירותי Firebase. מידע נוסף על
בתהליך יצירה
מפתחות API נפרדים ומוגבלים לסוגים ספציפיים של ממשקי 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.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"חסרים לי מידע או פרטים"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"התוכן מורכב מדי או עם יותר מדי שלבים"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"התוכן לא עדכני"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"בעיה בתרגום"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"בעיה בדוגמאות/בקוד"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"סיבה אחרת"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"התוכן קל להבנה"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"התוכן עזר לי לפתור בעיה"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"סיבה אחרת"
}]
{"lastModified": "\u05e2\u05d3\u05db\u05d5\u05df \u05d0\u05d7\u05e8\u05d5\u05df: 2024-09-12 (\u05e9\u05e2\u05d5\u05df UTC)."}
[[["התוכן קל להבנה","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"]],["עדכון אחרון: 2024-09-12 (שעון UTC)."]]