Konfigurowanie biblioteki śledzenia floty JavaScriptu

Zanim zaczniesz korzystać z biblioteki JavaScript do śledzenia floty, zapoznaj się z Fleet Engine i skonfiguruj tę usługę. Więcej informacji znajdziesz w artykule Fleet Engine.

Z tego dokumentu dowiesz się, jak włączyć autoryzację między aplikacją na stronie internetowej a Fleet Engine. Gdy skonfigurujesz żądania wysyłane do Fleet Engine z prawidłowymi tokenami autoryzacji, możesz zacząć śledzić pojazd na mapie.

Autoryzacja konfiguracji

Fleet Engine wymaga używania tokenów sieciowych JSON (JWT) w przypadku wywołań metod interfejsu API z środowisk o niskim poziomie zaufania: smartfonów i przeglądarek.

Token JWT pochodzi z Twojego serwera, jest podpisany i zaszyfrowany, a następnie przekazywany do klienta w celu dalszych interakcji z serwerem, dopóki nie wygaśnie lub nie będzie już ważny.

Najważniejsze informacje

Jak działa autoryzacja?

Autoryzacja za pomocą danych Fleet Engine obejmuje implementację po stronie serwera i po stronie klienta.

Autoryzacja po stronie serwera

Zanim skonfigurujesz uwierzytelnianie i autoryzację w aplikacji do śledzenia floty, serwer backendu musi mieć możliwość wydawania tokenów sieciowych JSON aplikacji do śledzenia floty w celu uzyskania dostępu do Fleet Engine. Aplikacja do śledzenia floty wysyła te tokeny JWT wraz z żądaniami, dzięki czemu Fleet Engine rozpoznaje je jako uwierzytelnione i uprawnione do uzyskiwania dostępu do danych w żądaniu. Instrukcje dotyczące implementacji tokenów JWT po stronie serwera znajdziesz w sekcji Wystawianie tokenów sieciowych JSONPodstawach Fleet Engine.

Aby wygenerować tokeny z serwera podczas wdrażania śledzenia floty, zapoznaj się z tymi informacjami:

Autoryzacja po stronie klienta

Gdy używasz biblioteki śledzenia floty w JavaScript, wysyła ona do serwera żądanie tokena za pomocą funkcji pobierania tokena autoryzacji. Dzieje się tak, gdy spełniony jest którykolwiek z tych warunków:

  • Nie ma prawidłowego tokenu, np. gdy pakiet SDK nie wywołał pobierania przy świeżym wczytaniu strony lub gdy pobieranie nie zwróciło tokenu.

  • Token wygasł.

  • Token wygaśnie za mniej niż minutę.

W przeciwnym razie biblioteka śledzenia floty w JavaScript używa wcześniej wydanego, prawidłowego tokena i nie wywołuje funkcji pobierania.

Tworzenie funkcji pobierania tokena autoryzacji

Utwórz funkcję pobierania tokena autoryzacyjnego, korzystając z tych wskazówek:

  • Pobierający musi zwrócić strukturę danych z 2 polami, opakowaną w Promise w ten sposób:

    • Ciąg znaków token.

    • Liczba expiresInSeconds. Token wygasa po upływie tego czasu od pobrania. Funkcja pobierania tokena uwierzytelniającego musi przekazywać do biblioteki czas wygaśnięcia w sekundach od momentu pobrania, jak pokazano w przykładzie.

  • Pobierający powinien wywołać adres URL na Twoim serwerze, aby pobrać token. Ten adres URL – SERVER_TOKEN_URL – zależy od implementacji backendu. Poniższy przykładowy adres URL dotyczy backendu przykładowej aplikacji na GitHubie:

    • https://SERVER_URL/token/fleet_reader

Przykład – tworzenie funkcji pobierania tokena autoryzacji

Te przykłady pokazują, jak utworzyć pobieranie tokena autoryzacji:

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

Co dalej?