הגדרת JavaScript Consumer SDK

בחירת פלטפורמה: Android iOS JavaScript

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

כדי להגדיר את JavaScript Consumer SDK, צריך לבצע את השלבים הבאים:

  1. הפעלת ממשק JavaScript API של מפות Google
  2. הגדרת הרשאה

הפעלת Maps JavaScript API

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

הגדרת הרשאה

בקריאות לשיטות API מסביבות עם רמת אמון נמוכה, מערכת Fleet Engine דורשת שימוש באסימוני JWT (JSON Web Tokens) בחתימה של חשבון שירות מתאים. סביבות עם רמת אמון נמוכה כוללות סמארטפונים ודפדפנים. ה-JWT מגיע בשרת, שהוא סביבה מהימנה לגמרי. ה-JWT נחתם, מוצפן ומוענק ללקוח לצורך אינטראקציות עתידיות עם השרת, עד שתוקף האסימון יפוג או שהוא כבר לא יהיה תקף.

הקצה העורפי צריך לבצע אימות ואישור מול Fleet Engine באמצעות מנגנונים סטנדרטיים של Application Default Credentials. חשוב להשתמש באסימוני JWT שנחתמו על ידי חשבון שירות מתאים. לרשימת התפקידים של חשבונות השירות, ראו תפקידי חשבון השירות של Fleet Engine בקטע יסודות של Fleet Engine.

לעומת זאת, הקצה העורפי צריך לבצע אימות ואישור מול Fleet Engine באמצעות מנגנונים רגילים של Application Default Credentials.

איך פועלת ההרשאה?

הרשאה עם נתוני Fleet Engine כוללת הטמעה גם בצד השרת וגם בצד הלקוח.

הרשאה בצד השרת

לפני שמגדירים אימות והרשאה באפליקציה מבוססת-האינטרנט, שרת הקצה העורפי שלכם צריך להיות מסוגל להנפיק אסימוני אינטרנט מסוג JSON לאפליקציה מבוססת-האינטרנט כדי לקבל גישה ל-Fleet Engine. האפליקציה מבוססת-האינטרנט שולחת את אסימוני ה-JWT האלה עם הבקשות שלה, כדי ש-Fleet Engine יזהה את הבקשות כמאומתות ומורשות לגשת לנתונים שבבקשה. להוראות להטמעת JWT בצד השרת, אפשר לעיין בקטע הנפקה של אסימוני אינטרנט מסוג JSON בקטע יסודות של Fleet Engine.

באופן ספציפי, חשוב לזכור את הנקודות הבאות לגבי ה-SDK של JavaScript לצרכן, לצורך שיתוף של התקדמות הנסיעה:

הרשאה בצד הלקוח

כשמשתמשים ב-JavaScript Consumer SDK, הוא מבקש אסימון מהשרת באמצעות שליפת אסימון הרשאה. היא עושה זאת כשמתקיים אחד מהתנאים הבאים:

  • אין טוקן תקף, למשל כש-SDK לא קרא למאחזר בטעינה של דף חדש, או כשהמאחזר לא החזיר טוקן.

  • פג תוקפו של הטוקן.

  • תוקף האסימון יפוג תוך דקה.

אחרת, ה-SDK של הצרכן ב-JavaScript משתמש באסימון התקף שכבר הונפקה ולא קורא לשליפה.

יצירת אובייקט לאחזור של אסימון הרשאה

יוצרים את האוסף של אסימוני ההרשאה לפי ההנחיות הבאות:

  • המאחזר צריך להחזיר מבנה נתונים עם שני שדות, שמוקף ב-Promise באופן הבא:

    • מחרוזת token.

    • מספר expiresInSeconds. התוקף של האסימון יפוג תוך פרק הזמן הזה אחרי האחזור. מאחזר אסימון האימות חייב להעביר את מועד התפוגה בשניות, מרגע השליפה לספרייה, כפי שמוצג בדוגמה.

  • המאחזר צריך לקרוא לכתובת URL בשרת שלכם כדי לאחזר אסימון. כתובת ה-URL הזו, ה-SERVER_TOKEN_URL, תלויה בהטמעה של הקצה העורפי. כתובת ה-URL לדוגמה הבאה היא של הקצה העורפי של האפליקציה לדוגמה ב-GitHub:

    • https://SERVER_URL/token/consumer/TRIPID

דוגמה – יצירת אובייקט לאחזור אסימון אימות

בדוגמאות הבאות מוסבר איך ליצור אובייקט לאחזור אסימון הרשאה:

JavaScript

async function authTokenFetcher(options) {
  // options is a record containing two keys called
  // serviceType and context. The developer should
  // generate the correct SERVER_TOKEN_URL and request
  // based on the values of these fields.
  const response = await fetch(SERVER_TOKEN_URL);
  if (!response.ok) {
    throw new Error(response.statusText);
  }
  const data = await response.json();
  return {
    token: data.Token,
    expiresInSeconds: data.ExpiresInSeconds
  };
}

TypeScript

function authTokenFetcher(options: {
  serviceType: google.maps.journeySharing.FleetEngineServiceType,
  context: google.maps.journeySharing.AuthTokenContext,
}): Promise<google.maps.journeySharing.AuthToken> {
  // The developer should generate the correct
  // SERVER_TOKEN_URL based on options.
  const response = await fetch(SERVER_TOKEN_URL);
  if (!response.ok) {
    throw new Error(response.statusText);
  }
  const data = await response.json();
  return {
    token: data.token,
    expiresInSeconds: data.ExpiresInSeconds,
  };
}

המאמרים הבאים

מעקב אחר נסיעה ב-JavaScript