לפני שמשתמשים בספריית JavaScript למעקב אחר צי רכב, צריך לוודא שמכירים את Fleet Engine והגדרתם אותו. לפרטים נוספים, אפשר לעיין במאמר בנושא Fleet Engine.
במאמר הזה מוסבר איך להפעיל הרשאה בין אפליקציית דף האינטרנט לבין Fleet Engine. אחרי שתגדירו את הבקשות ל-Fleet Engine עם אסימוני ההרשאה הנכונים, תוכלו לעקוב אחרי רכב במפה.
הגדרת הרשאה
ב-Fleet Engine נדרש שימוש באסימוני JWT (JSON Web Tokens) לקריאות ל-API method מסביבות עם רמת אבטחה נמוכה: סמארטפונים ודפדפנים.
אסימון JWT נוצר בשרת שלכם, נחתם, מוצפן ומועבר ללקוח לאינטראקציות עתידיות עם השרת עד שהוא יפוג או עד שהוא לא יהיה תקף יותר.
פרטים חשובים
- משתמשים ב-Application Default Credentials כדי לבצע אימות ולקבל הרשאה ב-Fleet Engine.
- משתמשים בחשבון שירות מתאים כדי לחתום על אסימוני JWT. מידע נוסף על תפקידים של חשבון שירות ב-Fleet Engine זמין במאמר יסודות Fleet Engine.
איך עובד תהליך ההרשאה?
ההרשאה לנתוני Fleet Engine כוללת הטמעה בצד השרת ובצד הלקוח.
הרשאה בצד השרת
לפני שמגדירים אימות והרשאה באפליקציה למעקב אחר צי רכבים, שרת הקצה העורפי צריך להיות מסוגל להנפיק טוקנים של אינטרנט בפורמט JSON לאפליקציה למעקב אחר צי רכבים, כדי לאפשר גישה ל-Fleet Engine. אפליקציית המעקב אחר צי הרכבים שולחת את אסימוני ה-JWT האלה עם הבקשות שלה, כדי ש-Fleet Engine יזהה את הבקשות כמאומתות וכבעלות הרשאה לגשת לנתונים בבקשה. הוראות להטמעת JWT בצד השרת מופיעות במאמר הנפקת אסימוני אינטרנט מסוג JSON בקטע היסודות של Fleet Engine.
כדי ליצור אסימונים מהשרת כשמטמיעים מעקב אחרי צי רכב, אפשר לעיין במאמרים הבאים:- הנחיות כלליות להנפקת אסימוני אינטרנט מסוג JSON, כולל קטעים בנושא נסיעות על פי דרישה ומשימות מתוזמנות
- נסיעות לפי דרישה: דוגמה לאסימון לפעולה בשרת backend
- משימות מתוזמנות: דוגמה לטוקן למעקב אחרי כל המשימות וכלי הרכב בצי
הרשאה מצד הלקוח
כשמשתמשים בספריית JavaScript למעקב אחר צי רכבים, היא שולחת בקשה לשרת לקבלת אסימון באמצעות כלי לאחזור אסימוני הרשאה. הוא עושה זאת אם אחד מהתנאים הבאים מתקיים:
לא קיים טוקן תקין, למשל כשה-SDK לא קרא ל-fetcher בטעינת דף חדשה, או כשה-fetcher לא החזיר טוקן.
פג תוקפו של הטוקן.
התוקף של הטוקן עומד לפוג תוך דקה.
אחרת, ספריית JavaScript למעקב אחר צי הרכבים משתמשת באסימון הקודם שתוקף שלו לא פג, ולא קוראת לפונקציה fetcher.
יצירת כלי לאחזור טוקן הרשאה
כדי ליצור את הפונקציה לאחזור אסימון ההרשאה, פועלים לפי ההנחיות הבאות:
המאחזר צריך להחזיר מבנה נתונים עם שני שדות, עטוף ב-
Promise
באופן הבא:מחרוזת
token
.מספר
expiresInSeconds
. הזמן שחולף עד שתוקף הטוקן פג אחרי שליפתו. הפונקציה להשגת אסימון אימות צריכה להעביר את זמן התפוגה בשניות, מהזמן של השגת האסימון לספרייה, כפי שמוצג בדוגמה.
הכלי לאחזור נתונים צריך להפעיל כתובת URL בשרת כדי לאחזר אסימון. כתובת ה-URL הזו –
SERVER_TOKEN_URL
– תלויה בהטמעה של ה-Backend. כתובת ה-URL הבאה היא של הקצה העורפי של האפליקציה לדוגמה ב-GitHub:https://SERVER_URL/token/fleet_reader
דוגמה – יצירת פונקציה להשגת טוקן הרשאה
בדוגמאות הבאות מוסבר איך ליצור כלי לאחזור אסימוני הרשאה:
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,
};
}