Zanim zaczniesz korzystać z biblioteki JavaScript do śledzenia floty, zapoznaj się z Fleet Engine i skonfiguruj tę usługę. Więcej informacji znajdziesz w artykule Fleet Engine.
Z tego dokumentu dowiesz się, jak włączyć autoryzację między aplikacją na stronie internetowej a Fleet Engine. Gdy skonfigurujesz żądania wysyłane do Fleet Engine z prawidłowymi tokenami autoryzacji, możesz zacząć ś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 i zaszyfrowany, a następnie przekazywany do klienta w celu dalszych interakcji z serwerem, dopóki nie wygaśnie lub nie będzie już ważny.
Najważniejsze informacje
- Użyj domyślnego uwierzytelniania aplikacji, aby uwierzytelniać i autoryzować dostęp do 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 Podstawowe informacje o Fleet Engine.
Jak działa autoryzacja?
Autoryzacja za pomocą 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 w celu uzyskania dostępu 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 Podstawach Fleet Engine.
Aby wygenerować tokeny z serwera podczas wdrażania śledzenia floty, zapoznaj się z tymi informacjami:- 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 do serwera żądanie tokena za pomocą funkcji pobierania tokena autoryzacji. Dzieje się tak, gdy spełniony jest którykolwiek z tych warunków:
Nie ma prawidłowego tokenu, np. gdy pakiet SDK nie wywołał pobierania przy świeżym wczytaniu strony lub gdy pobieranie nie zwróciło tokenu.
Token wygasł.
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 funkcji pobierania tokena autoryzacji
Utwórz funkcję pobierania tokena autoryzacyjnego, korzystając z tych wskazówek:
Pobierający musi zwrócić 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. Funkcja pobierania tokena uwierzytelniającego musi przekazywać do biblioteki czas wygaśnięcia w sekundach od momentu pobrania, jak pokazano w przykładzie.
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
Te przykłady pokazują, jak utworzyć pobieranie 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,
};
}