Zanim użyjesz biblioteki JavaScript do śledzenia floty, zapoznaj się z silnikiem floty i skonfiguruj go. Więcej informacji znajdziesz na stronie Fleet Engine.
Z tego dokumentu dowiesz się, jak włączyć autoryzację między aplikacją strony internetowej a Fleet Engine. Gdy żądania do Fleet Engine zostaną skonfigurowane przy użyciu odpowiednich tokenów autoryzacji, możesz zacząć śledzić pojazd na mapie.
Autoryzacja konfiguracji
W przypadku wywołań metod interfejsu API z środowisk o niskim poziomie zaufania usługa Fleet Engine wymaga korzystania z tokenów sieciowych JSON (JWT) podpisanych odpowiednim kontem usługi. Środowiska o niskim stopniu zaufania to m.in. smartfony i przeglądarki. Token JWT pochodzi z serwera, który jest pełnowymiarowym 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.
Backend powinien uwierzytelniać i autoryzować się w Fleet Engine za pomocą standardowych mechanizmów domyślnych danych logowania 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.
Z kolei backend powinien uwierzytelniać i autoryzować się w ramach Fleet Engine, korzystając ze standardowych mechanizmów danych uwierzytelniających aplikacji.
Jak działa autoryzacja?
Autoryzacja za pomocą danych Fleet Engine obejmuje implementację po stronie serwera i klienta.
Autoryzacja po stronie serwera
Zanim skonfigurujesz uwierzytelnianie i autoryzację w aplikacji śledzącej floty, serwer backendu musi być w stanie wysyłać tokeny sieciowe JSON do Twojej aplikacji do śledzenia floty, aby mieć dostęp do Fleet Engine. Aplikacja śledzenia floty przesyła te tokeny JWT z żądaniami, aby Fleet Engine rozpoznała je jako uwierzytelnione i upoważnione do 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.
Aby wygenerować tokeny na serwerze podczas wdrażania śledzenia floty, wykonaj te czynności:- Ogólne wskazówki dotyczące wydawania tokenów sieciowych JSON, w tym sekcje dotyczące zarówno przejazdów na żądanie, jak i zaplanowanych zadań
- Przejazdy na żądanie: przykład tokena dla operacji serwera backendu
- Zaplanowane zadania: przykładowy token do śledzenia wszystkich zadań i pojazdów we flocie
Autoryzacja po stronie klienta
Gdy używasz biblioteki śledzenia JavaScriptu, żąda ona tokena od serwera za pomocą modułu pobierania tokenów autoryzacji. Dzieje się tak, gdy jest spełniony dowolny 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 biblioteka śledzenia floty JavaScript 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:
Pobieranie musi zwracać strukturę danych z 2 polami, zapakowaną w
Promise
w ten sposób:Ciąg tekstowy
token
.Liczba
expiresInSeconds
. Po pobraniu token wygaśnie przez ten czas. Pobranie tokena uwierzytelniania musi nastąpić w okresie ważności (w sekundach) od momentu pobrania do biblioteki, jak pokazano w tym 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 URL prowadzi do backendu przykładowej aplikacji na GitHubie:https://SERVER_URL/token/fleet_reader
Przykład: tworzenie modułu do pobierania tokenów autoryzacji
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,
};
}