Konfigurowanie biblioteki śledzenia floty JavaScriptu

Zanim zaczniesz korzystać z biblioteki JavaScript do śledzenia floty, zapoznaj się z Fleet Engine i skonfiguruj ją. 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 do Fleet Engine z prawidłowymi tokenami autoryzacji, będziesz gotowy(-a) do śledzenia pojazdu 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 , czyli ze smartfonów i przeglądarek.

Token JWT pochodzi z Twojego serwera, jest podpisany, zaszyfrowany i przekazywany do klienta na potrzeby kolejnych interakcji z serwerem, dopóki nie wygaśnie lub nie będzie już ważny.

Najważniejsze informacje

Jak działa autoryzacja?

Autoryzacja dostępu do danych Fleet Engine wymaga implementacji zarówno po stronie serwera, jak 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, aby umożliwić jej dostęp do Fleet Engine. Aplikacja do śledzenia floty wysyła te tokeny JWT wraz z żądaniami, dzięki czemu Fleet Engine rozpoznaje żądania jako uwierzytelnione i autoryzowane do uzyskiwania dostępu do danych w żądaniu. Instrukcje dotyczące implementacji tokenów JWT po stronie serwera znajdziesz w sekcji Wydawanie tokenów sieciowych JSON w artykule Podstawy Fleet Engine.

Aby generować tokeny z serwera podczas implementowania śledzenia floty, zapoznaj się z tymi materiałami:

Autoryzacja po stronie klienta

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

  • Nie ma prawidłowego tokena, np. gdy pakiet SDK nie wywołał modułu pobierania podczas świeżego wczytania strony lub gdy moduł pobierania nie zwrócił tokena.

  • Token stracił ważność.

  • Token wygaśnie w ciągu minuty.

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

Tworzenie narzędzia do pobierania tokena autoryzacji

Utwórz moduł pobierania tokena autoryzacji, korzystając z tych wytycznych:

  • Moduł pobierania musi zwracać 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. Narzędzie do pobierania tokena uwierzytelniania musi przekazywać czas wygaśnięcia w sekundach od momentu pobrania do biblioteki, jak pokazano w przykładzie.

  • Moduł pobierania powinien wywoływać adres URL na serwerze , aby pobrać token. Ten adres URL – SERVER_TOKEN_URL – zależy od implementacji backendu. Ten przykładowy adres URL dotyczy backendu przykładowej aplikacji na GitHubie:

    • https://SERVER_URL/token/fleet_reader

Przykład – tworzenie narzędzia do pobierania tokena autoryzacji

Poniższe przykłady pokazują, jak utworzyć moduł pobierania 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?