הגדרת 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

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

הגדרת הרשאה

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

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

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

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

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

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

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

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

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

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

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

  • פג התוקף של האסימון.

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

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

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

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

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

    • מחרוזת token.

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

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

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