Zanim użyjesz biblioteki JavaScript do śledzenia floty, zapoznaj się z silnikiem floty i skonfiguruj go. Więcej informacji znajdziesz w Fleet Engine.
Z tego dokumentu dowiesz się, jak włączyć autoryzację między aplikacją strony internetowej a Fleet Engine. Gdy żądania wysyłane do Fleet Engine zostaną skonfigurowane za pomocą prawidłowych tokenów autoryzacji, będziesz mieć możliwość śledzenia pojazdu 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 poziomie zaufania to 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. Upewnij się, że używasz tokenów JWT podpisanych 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 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 do śledzenia floty, serwer backendowy musi mieć możliwość wydawania tokenów sieciowych JSON aplikacji do śledzenia floty, aby umożliwić jej 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 implementacji JWT po stronie serwera znajdziesz w sekcji Podstawy silnika floty w artykule Wydawanie tokenów sieciowych JSON.
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
- Zaplanowane zadania: przykładowy token do śledzenia wszystkich zadań i pojazdów w flotylli
Autoryzacja po stronie klienta
Gdy używasz biblioteki śledzenia Fleet w JavaScript, wysyła ona żądanie tokena z 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 biblioteka śledzenia floty JavaScript 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/fleet_reader
Przykład – tworzenie funkcji pobierania tokena autoryzacji
Te przykłady pokazują, jak utworzyć funkcję pobierania tokenu 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,
};
}