הגדרת JavaScript Consumer SDK

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

כדי להגדיר את Consumer SDK ל-JavaScript, פועלים לפי השלבים הבאים:

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

הפעלת Maps JavaScript API

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

הגדרת הרשאה

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

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

פרטים חשובים

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

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

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

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

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

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

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

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

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

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

  • האסימון יפוג בעוד פחות מדקה.

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

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

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

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

    • מחרוזת token.

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

  • המאחזר צריך לשלוח קריאה לכתובת URL בשרת שלכם כדי לאחזר טוקן. כתובת ה-URL הזו (SERVER_TOKEN_URL) תלויה בהטמעה של הקצה העורפי. כתובת ה-URL הבאה לדוגמה היא של ה-backend של האפליקציה לדוגמה ב-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,
  };
}

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