הגדרת JavaScript Consumer SDK

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

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

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

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

הפעלת Maps JavaScript API

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

הגדרת הרשאה

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

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

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

איך מתבצע האימות?

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

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

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

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

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

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

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

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

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

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

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

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

  • אוסף הנתונים חייב להחזיר מבנה נתונים עם שני שדות, עטוף ב-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