Zanim zaczniesz korzystać z biblioteki JavaScript do śledzenia floty, zapoznaj się z Fleet Engine i skonfiguruj go. Więcej informacji znajdziesz w sekcji Fleet Engine.
Z tego dokumentu dowiesz się, jak włączyć autoryzację między aplikacją na stronie internetowej a Fleet Engine. Gdy żądania wysyłane do Fleet Engine będą skonfigurowane z prawidłowymi tokenami autoryzacji, będzie można śledzić pojazd na mapie.
Autoryzacja konfiguracji
Fleet Engine wymaga używania tokenów sieciowych JSON (JWT) w przypadku wywołań metod interfejsu API z środowisk o niskim poziomie zaufania: smartfonów i przeglądarek.
Token JWT pochodzi z Twojego serwera, jest podpisany, zaszyfrowany i przekazywany do klienta na potrzeby kolejnych interakcji z serwerem, dopóki nie wygaśnie lub nie straci ważności.
Najważniejsze informacje
- Użyj domyślnego uwierzytelniania aplikacji, aby uwierzytelnić się i autoryzować w Fleet Engine.
- Używaj odpowiedniego konta usługi do podpisywania tokenów JWT. Więcej informacji o rolach konta usługi Fleet Engine znajdziesz w artykule Podstawy Fleet Engine.
Jak działa autoryzacja?
Autoryzacja z użyciem danych Fleet Engine obejmuje implementację po stronie serwera i po stronie klienta.
Autoryzacja po stronie serwera
Zanim skonfigurujesz uwierzytelnianie i autoryzację w aplikacji do śledzenia floty, serwer backendu musi mieć możliwość wydawania tokenów sieciowych JSON aplikacji do śledzenia floty, aby mogła ona uzyskać dostęp do Fleet Engine. Aplikacja do śledzenia floty wysyła te tokeny JWT wraz z żądaniami, dzięki czemu Fleet Engine rozpoznaje je jako uwierzytelnione i uprawnione do uzyskiwania dostępu do danych w żądaniu. Instrukcje dotyczące implementacji tokenów JWT po stronie serwera znajdziesz w sekcji Wystawianie tokenów sieciowych JSON w podstawowych informacjach o Fleet Engine.
Aby dowiedzieć się, jak generować tokeny z serwera podczas wdrażania śledzenia floty, zapoznaj się z tymi artykułami:- Ogólne wytyczne dotyczące wydawania tokenów sieciowych JSON, w tym sekcje dotyczące przejazdów na żądanie i zaplanowanych zadań.
- Przejazdy na żądanie: przykładowy token 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 floty w JavaScript, wysyła ona żądanie tokena do serwera za pomocą funkcji pobierania tokena autoryzacji. Dzieje się tak, gdy spełniony jest którykolwiek z tych warunków:
Nie ma prawidłowego tokena, np. gdy pakiet SDK nie wywołał pobierania przy świeżym wczytaniu strony lub gdy pobieranie nie zwróciło tokena.
Token stracił ważność.
Token wygaśnie za mniej niż minutę.
W przeciwnym razie biblioteka śledzenia floty w JavaScript używa wcześniej wydanego, prawidłowego tokena i nie wywołuje funkcji pobierania.
Tworzenie modułu pobierania tokenów autoryzacji
Utwórz moduł pobierania tokenów autoryzacji, korzystając z tych wskazówek:
Pobierający musi zwrócić strukturę danych z 2 polami, opakowaną w
Promisew ten sposób:Ciąg znaków
token.Liczba
expiresInSeconds. Token wygasa po upływie tego czasu od pobrania. Funkcja pobierająca token uwierzytelniania musi przekazywać do biblioteki czas wygaśnięcia w sekundach od momentu pobrania, jak pokazano w przykładzie.
Moduł pobierający powinien wywołać adres URL na Twoim serwerze, aby pobrać token. Ten adres URL –
SERVER_TOKEN_URL– zależy od implementacji backendu. Poniższy przykładowy adres URL dotyczy backendu przykładowej aplikacji na GitHubie:https://SERVER_URL/token/fleet_reader
Przykład – tworzenie funkcji pobierania tokena autoryzacji
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,
};
}