Konfigurowanie pakietu JavaScript Consumer SDK

Dzięki pakietowi JavaScript Consumer SDK Twoja aplikacja dla konsumentów może wyświetlać na mapie internetowej lokalizację pojazdów i innych miejsc zainteresowania śledzonych w Fleet Engine. Dzięki temu klienci będą mogli śledzić postępy dostawy. W tym przewodniku zakładamy, że masz skonfigurowany Fleet Engine z powiązanym projektem Google Cloud i kluczami interfejsu API. Więcej informacji znajdziesz w Fleet Engine.

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

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

Włączanie interfejsu 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

Fleet Engine wymaga używania tokenów sieciowych JSON (JWT) do wywoływania metod interfejsu API z środowisk o niskim poziomie zaufania, takich jak smartfony i przeglądarki.

Token JWT pochodzi z serwera, jest podpisywany, szyfrowany i przekazywany do klienta do dalszych interakcji z serwerem, dopóki nie wygaśnie lub nie straci ważności.

Najważniejsze informacje

Aplikacja dla konsumentów powinna uwierzytelniać użytkowników za pomocą roli delivery_consumer w projekcie Google Cloud, aby zwracać tylko informacje o konsumentach. W ten sposób Fleet Engine filtruje i zakrywa wszystkie inne informacje w odpowiedziach. Podczas zadania dotyczącego niedostępności użytkownik nie otrzymuje żadnych informacji o lokalizacji. Zapoznaj się z rolami konta usługi dotyczącymi zaplanowanych zadań.

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 uzyskiwania dostępu do Fleet Engine. Twoja aplikacja internetowa wysyła te tokeny JWT z żądaniami, aby usługa Fleet Engine uznała je za uwierzytelnione i upoważnione do dostępu do danych w żądaniu. Instrukcje dotyczące implementacji JWT po stronie serwera znajdziesz w sekcji Najważniejsze informacje o Fleet Engine Wydawanie tokenów sieciowych JSON.

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 wcześniej wydanego prawidłowego tokena i nie wywołuje funkcji pobierania.

Tworzenie funkcji pobierania tokena autoryzacji

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

  • Pobieranie musi zwracać strukturę danych z 2 polami, zapakowaną w Promise w ten sposób:

    • Ciąg tekstowy token.

    • Liczba expiresInSeconds. Token wygasa po tym czasie po pobraniu. Pobranie tokena uwierzytelniania musi nastąpić w okresie ważności (w sekundach) od momentu pobrania do biblioteki, jak pokazano w tym przykładzie.

  • Aby pobrać token, pobieracz powinien wywołać adres URL na Twoim serwerze. 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 funkcji pobierania tokenu uwierzytelniania

Te przykłady pokazują, jak utworzyć funkcję 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?