設定 JavaScript 機群追蹤程式庫

使用 JavaScript 機群追蹤程式庫前, 熟悉並設定了 Fleet Engine。詳情請參閱 Fleet Engine

本文件將說明如何啟用 和 Fleet Engine 的網頁應用程式向 Fleet Engine 發出的要求 正確設定正確的授權權杖 在地圖上追蹤車輛。

設定授權

Fleet Engine 必須使用 適用於來自 low-trust 的 API 方法呼叫的適當服務帳戶 環境。低信任的環境包括智慧型手機和瀏覽器。JWT 會在伺服器上產生,而伺服器是完全信任的環境。JWT 簽署、加密並傳遞至用戶端,以供後續伺服器使用 互動,直到過期或不再有效。

您的後端應使用 標準的應用程式預設憑證機制。廠牌 請務必使用適當服務帳戶簽署的 JWT。如需服務帳戶角色的清單,請參閱「Fleet Engine 基礎知識」中的Fleet Engine 服務帳戶角色。

授權程序如何運作?

使用 Fleet Engine 資料進行授權時,涉及伺服器端和用戶端 。

伺服器端授權

在車隊追蹤應用程式中設定授權前,後端伺服器必須能夠提供 JSON Web 權杖。如此一來,Fleet Engine 就會將來自應用程式的要求視為已授權存取要求中的資料。如需伺服器端 JWT 實作的操作說明,請參閱 在「Fleet Engine Essentials」下方發出 JSON Web Token

如要在實作機群追蹤功能時從伺服器產生權杖,請參閱 包括:

用戶端授權

使用 JavaScript 機群追蹤程式庫時,系統會透過 授權權杖擷取工具系統會在符合下列任一條件時執行此動作:

  • 沒有有效的憑證,例如 SDK 未在 載入新的網頁,或是擷取程式未傳回權杖時。

  • 權杖已過期。

  • 憑證會在一分鐘內到期。

否則,JavaScript 機群追蹤程式庫會使用先前核發的有效權杖, 呼叫擷取程式

建立授權權杖擷取工具

按照下列指南建立授權權杖擷取工具:

  • 擷取器必須傳回兩個欄位的資料結構,並以 Promise,如下所示:

    • 字串 token

    • 數字 expiresInSeconds。權杖的有效期限為這個時長 擷取。驗證權杖擷取工具必須及時 從擷取到資料庫的時間 (以秒為單位),如圖所示 這個例子

  • 擷取器應呼叫伺服器上的網址以擷取憑證。這個 網址:SERVER_TOKEN_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,
  };
}

後續步驟