הגדרת JavaScript Consumer SDK

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

כדי להגדיר את JavaScript Consumer SDK:

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

הפעלת Maps JavaScript API

מפעילים את Maps JavaScript API בפרויקט ב-Google Cloud Console שבו אתם משתמשים במופע של Fleet Engine. פרטים נוספים זמינים במאמר בנושא הפעלת ממשקי API במסמכי העזרה של Maps JavaScript API.

הגדרת הרשאה

ב-Fleet Engine נדרש שימוש באסימוני JWT ‏ (JSON Web Tokens) לקריאות ל-method של API מסביבות עם רמת אבטחה נמוכה: סמארטפונים ודפדפנים.

אסימון JWT נוצר בשרת שלכם, נחתם, מוצפן ומועבר ללקוח לאינטראקציות הבאות עם השרת עד שהוא פג או עד שהוא כבר לא תקף.

פרטים חשובים

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

איך עובד תהליך ההרשאה?

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

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

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

בפרט, חשוב לזכור את הנקודות הבאות לגבי JavaScript Consumer SDK למעקב אחר משלוחים:

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

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

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

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

  • התוקף של הטוקן עומד לפוג תוך דקה.

אחרת, JavaScript Consumer SDK משתמש באסימון הקודם שתוקף שלו לא פג, ולא קורא ל-fetcher.

יצירת כלי לאחזור טוקן הרשאה

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

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

    • מחרוזת token.

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

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

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

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

בדוגמאות הבאות מוסבר איך ליצור כלי לאחזור אסימוני הרשאה:

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,
  };
}

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