מוצרי הפלטפורמה של מפות Google מאובטחים מפני שימוש לא מורשה על ידי הגבלת קריאות ה-API למשתמשים שמספקים פרטי כניסה מתאימים לאימות. פרטי הכניסה האלה הם מפתח API - מחרוזת אלפאנומרית ייחודית שמשייכת את החשבון לחיוב שלך ב-Google לחשבון ולפרויקט ה-API או ה-SDK הספציפיים.
במדריך הזה מוסבר איך ליצור מפתח API, להגביל אותו ולהשתמש בו בפלטפורמה של מפות Google.
לפני שמתחילים
לפני שמתחילים להשתמש ב-Maps JavaScript API, צריך פרויקט עם חשבון לחיוב וגם JavaScript API של מפות Google הופעל. מידע נוסף זמין במאמר הגדרה במסוף Cloud.
יצירת מפתחות API
מפתח ה-API הוא מזהה ייחודי שמאמת בקשות שמשויכות לפרויקט שלכם, למטרות שימוש וחיוב. צריך להיות לכם לפחות מפתח API אחד שמשויך לפרויקט.
כך יוצרים מפתח API:
המסוף
-
עוברים אל הפלטפורמה של מפות Google > הדף 'פרטי כניסה'.
-
בדף Credentials, לוחצים על Create credentials > מפתח API.
תיבת הדו-שיח מפתח API שנוצר מציגה את מפתח ה-API החדש שיצרתם. -
לוחצים על סגירה.
מפתח ה-API החדש מופיע בדף Credentials בקטע API Keys.
(חשוב לזכור להגביל את ה-API לפני שמשתמשים בו בסביבת הייצור.)
Cloud SDK
gcloud alpha services api-keys create \ --project "PROJECT" \ --display-name "DISPLAY_NAME"
מידע נוסף על Google Cloud SDK , התקנת Cloud SDK ואת הפקודות הבאות:
הגבלת מפתחות API
Google ממליצה מאוד להגביל את מפתחות ה-API ולהגביל את השימוש בהם רק למפתחות ה-API ממשקי API הנדרשים לאפליקציה שלכם. הגבלת מפתחות API מוסיפה אבטחה לאפליקציה על ידי להגן עליו מפני בקשות לא מוצדקות. מידע נוסף זמין במאמר הבא: שיטות מומלצות לשמירה על אבטחה ב-API.
כדי להגביל מפתח API:
המסוף
-
עוברים אל הפלטפורמה של מפות Google > הדף 'פרטי כניסה'.
- בוחרים את מפתח ה-API שבו רוצים להגדיר הגבלה. יופיע דף המאפיין של מפתח API.
- בקטע Key restrictions, מגדירים את ההגבלות הבאות:
- הגבלות על אפליקציות:
- כדי לקבל בקשות מרשימת האתרים שאתם מספקים, צריך לבחור באפשרות HTTP הפניות (אתרי אינטרנט) מרשימת האפליקציות הגבלות.
- מציינים אתר מפנה אחד או יותר. אפשר להשתמש בתו כללי לחיפוש
תווים כדי לאשר את כל תת-הדומיינים (לדוגמה,
https://*.google.com
מקבל את כל האתרים שמסתיימים ב-.google.com
כשניגשים באמצעות HTTPS). שימו לב שאם מציינים www.domain.com, הוא משמש כתו כללי לחיפוש www.domain.com/*, וכן מאשרת כל נתיב משנה בשם המארח הזה. הגדרת סכימות של גורם מפנה מסוגhttps://
ו-http://
כפי שהן. בפרוטוקולים אחרים של כתובות URL, צריך להשתמש בייצוג מיוחד. עבור לדוגמה, הפורמטfile:///path/to/
הוא__file_url__//path/to/*
. אחרי שתפעילו אתרים, הקפידו לעקוב אחר השימוש שלכם כדי לוודא הוא תואם לציפיות שלך. הפרוטוקולים הבאים נתמכים:about://
,app://
,applewebdata://
asset://
,chrome://
,content://
,file://
,ftp://
,ionic://
,local://
,ms-appx://
,ms-appx-web://
,ms-local-stream://
,prism://
,qrc://
,res://
,saphtmlp://
. - הגבלות על ממשקי API:
- לוחצים על Restrict key.
- בוחרים באפשרות Maps JavaScript API בתפריט הנפתח Select APIs. אם Maps JavaScript API לא מופיע ברשימה, עליך להפעיל אותו.
- אם בפרויקט נעשה שימוש בספריית המקומות, בוחרים גם את Places API. באופן דומה, אם הפרויקט שלכם משתמש בשירותים אחרים ב-JavaScript API (Directions Service, Destination Matrix Service, שירות גובה ו/או שירות קידוד גיאוגרפי), צריך גם להפעיל ולבחור את ה-API המתאים ברשימה.
- כדי להשלים את השינויים, לוחצים על שמירה.
Cloud SDK
הצגת רשימה של המפתחות הקיימים.
gcloud services api-keys list --project="PROJECT"
הסרת ההגבלות הקיימות במפתח הקיים.
gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \ --clear-restrictions
הגדרת הגבלות חדשות למפתח קיים.
gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \ --api-target="maps-backend.googleapis.com" --allowed-referrers="referer"
מידע נוסף על Google Cloud SDK , התקנת Cloud SDK ואת הפקודות הבאות:
הוספה של מפתח ה-API לבקשה
יש לכלול מפתח API בכל בקשה של Maps JavaScript API.
בדוגמה הבאה, מחליפים את YOUR_API_KEY
עם
מפתח API.
<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script>