Konfigurowanie pakietu JavaScript Consumer SDK

Dzięki pakietowi JavaScript Consumer SDK Twoja aplikacja użytkownika może wyświetlać lokalizację pojazdów i inne lokalizacje zainteresowania śledzone w Fleet Engine na mapie internetowej. Dzięki temu użytkownicy mogą śledzić postępy w dostawie. W tym przewodniku zakładamy, że masz już skonfigurowany Fleet Engine z powiązanym projektem w chmurze Google Cloud i kluczami interfejsu API. Więcej informacji znajdziesz w artykule Fleet Engine.

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

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

Włączanie Maps JavaScript API

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

Konfigurowanie autoryzacji

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 jest generowany na Twoim serwerze, podpisywany, szyfrowany i przekazywany do klienta na potrzeby kolejnych interakcji z serwerem, dopóki nie wygaśnie lub nie stanie się nieważny.

Najważniejsze informacje

Twoja aplikacja użytkownika powinna uwierzytelniać użytkowników końcowych za pomocą roli delivery_consumer z projektu Google Cloud, aby zwracać tylko informacje dotyczące konsumentów. W ten sposób Fleet Engine filtruje i usuwa wszystkie inne informacje w odpowiedziach. Na przykład podczas zadania niedostępności żadne informacje o lokalizacji nie są udostępniane użytkownikowi. Więcej informacji znajdziesz w artykule Role konta usługi w przypadku zadań zaplanowanych.

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 internetowej, serwer backendowy musi mieć możliwość wydawania tokenów sieciowych JSON do aplikacji internetowej, aby uzyskać dostęp do Fleet Engine. Aplikacja internetowa 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.

W przypadku pakietu JavaScript Consumer SDK do śledzenia przesyłek pamiętaj o tych kwestiach:

Autoryzacja po stronie klienta

Gdy używasz pakietu JavaScript Consumer SDK, wysyła on żą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 przy świeżym wczytaniu strony lub gdy moduł pobierania nie zwrócił tokena.

  • Token stracił ważność.

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

W przeciwnym razie pakiet JavaScript Consumer SDK używa wcześniej wydanego, prawidłowego tokena i nie wywołuje modułu 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 Twoim serwerze , aby pobrać token. Ten adres URL – SERVER_TOKEN_URL – zależy od implementacji backendu. Ten przykładowy adres URL jest przeznaczony dla backendu przykładowej aplikacji na GitHubie:

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

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

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?