JavaScript-Flotten-Tracking-Bibliothek einrichten

Bevor Sie die JavaScript-Bibliothek für die Flottenverfolgung verwenden, sollten Sie mit Fleet Engine vertraut sein und sie eingerichtet haben. Weitere Informationen finden Sie unter Fleet Engine.

In diesem Dokument wird beschrieben, wie Sie die Autorisierung zwischen der Webseiten-App und Fleet Engine aktivieren. Sobald Ihre Anfragen an Fleet Engine mit den richtigen Autorisierungstokens eingerichtet wurden, können Sie ein Fahrzeug auf einer Karte verfolgen.

Autorisierung einrichten

Für API-Methodenaufrufe aus Umgebungen mit geringem Vertrauensniveau (Smartphones und Browser) ist in Fleet Engine die Verwendung von JSON-Webtokens (JWTs) erforderlich.

Ein JWT wird auf Ihrem Server erstellt, signiert, verschlüsselt und an den Client übergeben. Es wird für nachfolgende Serverinteraktionen verwendet, bis es abläuft oder nicht mehr gültig ist.

Wichtige Details

Wie funktioniert die Autorisierung?

Die Autorisierung mit Fleet Engine-Daten umfasst sowohl die serverseitige als auch die clientseitige Implementierung.

Serverseitige Autorisierung

Bevor Sie die Authentifizierung und Autorisierung in Ihrer Anwendung für die Flottenverfolgung einrichten, muss Ihr Backend-Server JSON-Webtokens für Ihre Anwendung für die Flottenverfolgung ausstellen können, damit diese auf Fleet Engine zugreifen kann. Ihre Anwendung zur Flottenverfolgung sendet diese JWTs mit ihren Anfragen, damit Fleet Engine die Anfragen als authentifiziert und autorisiert für den Zugriff auf die Daten in der Anfrage erkennt. Eine Anleitung zur serverseitigen JWT-Implementierung finden Sie unter JSON Web Tokens ausstellen im Abschnitt Fleet Engine Essentials.

Wenn Sie beim Implementieren der Flottenverfolgung Tokens von Ihrem Server generieren möchten, lesen Sie die folgenden Informationen:

Clientseitige Autorisierung

Wenn Sie die JavaScript-Bibliothek für die Flottenverfolgung verwenden, wird mit einem Autorisierungstoken-Fetcher ein Token vom Server angefordert. Das passiert, wenn eine der folgenden Bedingungen zutrifft:

  • Es ist kein gültiges Token vorhanden, z. B. wenn das SDK den Fetcher bei einem neuen Seitenaufruf nicht aufgerufen hat oder wenn der Fetcher kein Token zurückgegeben hat.

  • Das Token ist abgelaufen.

  • Das Token läuft in einer Minute ab.

Andernfalls wird das zuvor ausgestellte, gültige Token verwendet und der Fetcher wird nicht aufgerufen.

Autorisierungstoken-Fetcher erstellen

Erstellen Sie den Fetcher für Autorisierungstokens anhand der folgenden Richtlinien:

  • Der Fetcher muss eine Datenstruktur mit zwei Feldern zurückgeben, die wie folgt in ein Promise eingebunden ist:

    • Ein String token.

    • Eine Zahl expiresInSeconds. Ein Token läuft nach diesem Zeitraum nach dem Abrufen ab. Der Abrufer für das Authentifizierungstoken muss die Ablaufzeit in Sekunden ab dem Zeitpunkt des Abrufs an die Bibliothek übergeben, wie im Beispiel gezeigt.

  • Der Fetcher sollte eine URL auf Ihrem Server aufrufen, um ein Token abzurufen. Diese URL – die SERVER_TOKEN_URL – hängt von Ihrer Backend-Implementierung ab. Die folgende Beispiel-URL verweist auf das Beispiel-App-Backend auf GitHub:

    • https://SERVER_URL/token/fleet_reader

Beispiel: Fetcher für Autorisierungstoken erstellen

Die folgenden Beispiele zeigen, wie Sie einen Fetcher für Autorisierungstokens erstellen:

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,
  };
}

Nächste Schritte