שימוש במפתחות API

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

במדריך הזה מוסבר איך ליצור את מפתח ה-API לפלטפורמה של מפות Google, להגביל אותו ולהשתמש בו.

לפני שמתחילים

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

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

מפתח ה-API הוא מזהה ייחודי שמאמת בקשות שמשויכות לפרויקט שלך למטרות שימוש וחיוב. צריך להיות לך לפחות מפתח API אחד שמשויך לפרויקט.

כך יוצרים מפתח API:

מסוף

  1. עוברים לדף Google Maps Platform > Credentials (הפלטפורמה של מפות Google > פרטי כניסה).

    לדף Credentials

  2. בדף Credentials, לוחצים על Create credentials > API key.
    תיבת הדו-שיח API key created מציגה את מפתח ה-API החדש שיצרתם.
  3. לוחצים על סגירה.
    מפתח ה-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:

מסוף

  1. עוברים לדף Google Maps Platform > Credentials (הפלטפורמה של מפות Google > פרטי כניסה).

    לדף Credentials

  2. בוחרים את מפתח ה-API שרוצים להגדיר עליו הגבלה. יופיע דף המאפיין של מפתח API.
  3. בקטע Key restrictions, מגדירים את ההגבלות הבאות:
    • הגבלות על אפליקציות:
      1. כדי לאשר בקשות מרשימת האתרים שאתם מספקים, בוחרים באפשרות הפניות HTTP (אתרי אינטרנט) מהרשימה Application restrictions.
      2. יש לציין אתר מפנה אחד או יותר. אפשר להשתמש בתווים כלליים לחיפוש כדי לתת הרשאה לכל תתי-הדומיין (לדוגמה, https://*.google.com מקבל את כל האתרים שמסתיימים ב-.google.com כשניגשים אליהם ב-HTTPS). הערה: אם מציינים את www.domain.com, הוא פועל כתו כללי לחיפוש www.domain.com/* ומאשר כל נתיב משנה בשם המארח הזה. יש לציין סכמות של https:// ו-http:// כפי שהן. עבור פרוטוקולים אחרים של כתובות אתרים, עליך להשתמש בייצוג מיוחד. לדוגמה, צריך להזין את 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:
      1. לוחצים על Restrict key.
      2. בוחרים באפשרות מפות JavaScript API בתפריט הנפתח Select APIs. אם Maps JavaScript API לא מופיע ברשימה, צריך enable אותו.
      3. אם בפרויקט שלכם נעשה שימוש בספריית המקומות, בוחרים גם באפשרות Places API. באופן דומה, אם בפרויקט נעשה שימוש בשירותים אחרים של JavaScript API (שירות מסלול, שירות מטריצת מרחק, שירות גובה ו/או שירות קידוד גיאוגרפי), עליכם גם להפעיל ולבחור את ה-API המתאים ברשימה הזו.
  4. כדי להשלים את השינויים, לוחצים על שמירה.

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>