設定 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 Token因此 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,
  };
}

後續步驟