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

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

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

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

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

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

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

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

המסוף

  1. עוברים אל הפלטפורמה של מפות Google > הדף 'פרטי כניסה'.

    כניסה לדף Credentials

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

כדי להגביל מפתח API:

המסוף

  1. עוברים אל הפלטפורמה של מפות Google > הדף 'פרטי כניסה'.

    כניסה לדף Credentials

  2. בוחרים את מפתח ה-API שבו רוצים להגדיר הגבלה. יופיע דף המאפיין של מפתח API.
  3. בקטע Key restrictions, מגדירים את ההגבלות הבאות:
    • הגבלות על אפליקציות:
      1. כדי לקבל בקשות מרשימת האתרים שאתם מספקים, צריך לבחור באפשרות HTTP הפניות (אתרי אינטרנט) מרשימת האפליקציות הגבלות.
      2. מציינים אתר מפנה אחד או יותר. אפשר להשתמש בתו כללי לחיפוש תווים כדי לאשר את כל תת-הדומיינים (לדוגמה, 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:
      1. לוחצים על Restrict key.
      2. בוחרים באפשרות Maps JavaScript API בתפריט הנפתח Select APIs. אם Maps JavaScript API לא מופיע ברשימה, עליך להפעיל אותו.
      3. אם בפרויקט נעשה שימוש בספריית המקומות, בוחרים גם את Places API. באופן דומה, אם הפרויקט שלכם משתמש בשירותים אחרים ב-JavaScript API (Directions Service, Destination Matrix Service, שירות גובה ו/או שירות קידוד גיאוגרפי), צריך גם להפעיל ולבחור את ה-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>