Konfigurowanie pakietu JavaScript Consumer SDK

Dzięki pakietowi JavaScript Consumer SDK Twoja aplikacja dla klientów indywidualnych może wyświetlać lokalizację pojazdów i innych interesujących lokalizacji śledzonych przez Fleet Engine na mapie internetowej. Dzięki temu użytkownicy będą mogli śledzić postęp wysyłki. W tym przewodniku zakładamy, że masz już skonfigurowany mechanizm floty z powiązanym projektem Google Cloud i kluczami interfejsu API. Więcej informacji znajdziesz na stronie Fleet Engine.

Aby skonfigurować JavaScript Consumer SDK, wykonaj te czynności:

  1. Włącz Maps JavaScript API.
  2. Skonfiguruj autoryzację.

Włączanie Maps JavaScript API

Włącz interfejs Maps JavaScript API w projekcie konsoli Google Cloud, którego używasz do instancji Fleet Engine. Więcej informacji znajdziesz w sekcji Włączanie interfejsów API w dokumentacji interfejsu Maps JavaScript API.

Autoryzacja konfiguracji

W przypadku wywołań metod interfejsu API pochodzących ze środowisk o niskim poziomie zaufania Fleet Engine wymaga użycia tokenów sieciowych JSON (JWT) podpisanych przez odpowiednie konto usługi. Środowiska o niskim poziomie zaufania to smartfony i przeglądarki. Token JWT zaczyna się na serwerze, który jest w pełni zaufanym środowiskiem. JWT jest podpisywany, szyfrowany i przekazywany do klienta na potrzeby kolejnych interakcji z serwerem, dopóki nie wygaśnie lub nie straci ważności.

Twój backend powinien uwierzytelniać się i autoryzować we Fleet Engine przy użyciu standardowych mechanizmów domyślnych danych uwierzytelniających aplikacji. Pamiętaj, aby używać tokenów JWT, które zostały podpisane przez odpowiednie konto usługi. Listę ról kont usług znajdziesz w artykule Podstawy Fleet Engine, w sekcji Role kont usług Fleet Engine.

Twoja aplikacja konsumencka powinna uwierzytelniać użytkowników przy użyciu roli delivery_consumer z projektu Google Cloud, aby zwracać tylko informacje dotyczące danego klienta. W ten sposób Fleet Engine filtruje i usuwa w odpowiedziach wszystkie inne informacje. Na przykład podczas zadania związanego z niedostępnością żadne informacje o lokalizacji nie są udostępniane użytkownikowi. Informacje o zaplanowanych zadaniach znajdziesz w artykule Role konta usługi.

W przeciwieństwie do tego Twój backend powinien uwierzytelniać się i autoryzować w odniesieniu do Fleet Engine przy użyciu standardowych mechanizmów domyślnych danych logowania aplikacji.

Jak działa autoryzacja?

Autoryzacja za pomocą danych Fleet Engine wymaga implementacji po stronie serwera i po stronie klienta.

Autoryzacja po stronie serwera

Zanim skonfigurujesz uwierzytelnianie i autoryzację w aplikacji internetowej, serwer backendu musi mieć możliwość wydawania tokenów sieciowych JSON aplikacji internetowej na potrzeby dostępu do Fleet Engine. Twoja aplikacja internetowa wysyła te tokeny JWT ze swoimi żądaniami, aby usługa Fleet Engine rozpoznawała żądania jako uwierzytelnione i uprawnione do uzyskania dostępu do danych w żądaniu. Instrukcje dotyczące wdrażania JWT po stronie serwera znajdziesz w artykule Wydawanie tokenów sieciowych JSON w artykule na temat podstaw floty.

W szczególności w przypadku pakietu SDK JavaScript Consumer do śledzenia przesyłek należy pamiętać o tych kwestiach:

Autoryzacja po stronie klienta

Gdy używasz pakietu JavaScript Consumer SDK, wysyła on żądanie tokena do serwera za pomocą modułu pobierania tokena autoryzacji. Dzieje się tak, gdy jest spełniony co najmniej jeden z tych warunków:

  • Brak prawidłowego tokenu, np. gdy pakiet SDK nie wywołał funkcji pobierania podczas wczytywania nowej strony lub gdy funkcja pobierania nie zwróciła tokenu.

  • Token wygasł.

  • Token wygaśnie za minutę.

W przeciwnym razie pakiet JavaScript Consumer SDK używa wydanego wcześniej prawidłowego tokena i nie wywołuje funkcji pobierania.

Tworzenie modułu pobierania tokenów autoryzacji

Aby utworzyć funkcję pobierania tokenu autoryzacyjnego, postępuj zgodnie z tymi wskazówkami:

  • Moduł pobierania musi zwrócić strukturę danych z 2 polami zapakowaną w Promise w następujący sposób:

    • Ciąg tekstowy token.

    • Liczba expiresInSeconds. Token wygasa po tym czasie po pobraniu. Narzędzie do pobierania tokenów uwierzytelniania musi przekazać czas do wygaśnięcia (w sekundach) od momentu pobrania danych do biblioteki, jak pokazano w przykładzie.

  • Moduł pobierania powinien wywołać adres URL na Twoim serwerze, aby pobrać token. Ten adres URL (SERVER_TOKEN_URL) zależy od implementacji backendu. Ten przykładowy adres URL dotyczy back-endu przykładowej aplikacji na GitHubie:

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

Przykład – tworzenie modułu pobierania tokenów uwierzytelniania

W przykładach poniżej pokazujemy, jak utworzyć moduł pobierania tokenów 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?