Mit dem JavaScript Consumer SDK kann Ihre Consumer-App den Standort von Fahrzeugen und andere Orte von Interesse, die in Fleet Engine erfasst werden, auf einer webbasierten Karte anzeigen. So können Ihre Kunden den Fortschritt der Fahrt des Fahrers sehen. In diesem Leitfaden wird davon ausgegangen, dass Sie Fleet Engine mit dem zugehörigen Google Cloud-Projekt und den API-Schlüsseln eingerichtet haben. Weitere Informationen finden Sie unter Fleet Engine.
So richten Sie das JavaScript Consumer SDK ein:
Maps JavaScript API aktivieren
Aktivieren Sie die Maps JavaScript API in der Google Cloud Console. Weitere Informationen finden Sie in der Google Cloud-Dokumentation unter APIs aktivieren. Dadurch wird das Consumer SDK für JavaScript aktiviert.
Autorisierung einrichten
Für API-Methodenaufrufe aus Umgebungen mit geringem Vertrauensgrad (Smartphones und Browser) ist in Fleet Engine die Verwendung von JSON Web Tokens (JWTs) erforderlich.
Ein JWT wird auf Ihrem Server erstellt, signiert, verschlüsselt und an den Client weitergegeben. Es wird für nachfolgende Serverinteraktionen verwendet, bis es abläuft oder nicht mehr gültig ist.
Wichtige Details
- Verwenden Sie Standardanmeldedaten für Anwendungen, um sich bei Fleet Engine zu authentifizieren und zu autorisieren.
- Verwenden Sie ein geeignetes Dienstkonto, um JWTs zu signieren. Weitere Informationen finden Sie unter Dienstkontorollen für Fleet Engine in Grundlagen von Fleet Engine.
Wie funktioniert die Autorisierung?
Die Autorisierung mit Fleet Engine-Daten umfasst sowohl die serverseitige als auch die clientseitige Implementierung.
Serverseitige Autorisierung
Bevor Sie die Authentifizierung und Autorisierung in Ihrer webbasierten Anwendung einrichten, muss Ihr Backend-Server in der Lage sein, JSON Web Tokens für Ihre webbasierte Anwendung auszugeben, um auf Fleet Engine zuzugreifen. Ihre webbasierte Anwendung sendet diese JWTs mit ihren Anfragen, damit Fleet Engine die Anfragen als authentifiziert und autorisiert für den Zugriff auf die Daten in der Anfrage erkennt. Eine Anleitung zur serverseitigen JWT-Implementierung finden Sie unter JSON Web Tokens ausgeben in Grundlagen von Fleet Engine.
Beachten Sie insbesondere Folgendes für das JavaScript Consumer SDK zum Teilen des Fahrtfortschritts:- Allgemeine Richtlinien für die Ausgabe von JSON Web Tokens
- JWT-Richtlinien für On-Demand-Fahrten
- Beispieltoken für einen Consumer-Vorgang
Clientseitige Autorisierung
Wenn Sie das JavaScript Consumer SDK verwenden, wird mit einem Abrufer für Autorisierungstokens ein Token vom Server angefordert. Dies geschieht, wenn eine der folgenden Bedingungen erfüllt ist:
Es ist kein gültiges Token vorhanden, z. B. wenn das SDK den Abrufer beim Seitenaufbau nicht aufgerufen hat oder wenn der Abrufer kein Token zurückgegeben hat.
Das Token ist abgelaufen.
Das Token läuft in weniger als einer Minute ab.
Andernfalls verwendet das JavaScript Consumer SDK das zuvor ausgegebene, gültige Token und ruft den Abrufer nicht auf.
Abrufer für Autorisierungstokens erstellen
Erstellen Sie Ihren Abrufer für Autorisierungstokens anhand dieser Richtlinien:
Der Abrufer muss eine Datenstruktur mit zwei Feldern zurückgeben, die wie folgt in ein
Promiseeingeschlossen sind:Ein String
token.Eine Zahl
expiresInSeconds. Ein Token läuft nach dieser Zeit nach dem Abrufen ab. Der Abrufer für Authentifizierungstokens muss die Ablaufzeit in Sekunden ab dem Zeitpunkt des Abrufs an die Bibliothek übergeben, wie im Beispiel gezeigt.
Der Fetcher sollte eine URL auf Ihrem Server aufrufen , um ein Token abzurufen. Diese URL (
SERVER_TOKEN_URL) hängt von Ihrer Backend-Implementierung ab. Die folgende Beispiel-URL gilt für das Backend der Beispiel-App auf GitHub:https://SERVER_URL/token/consumer/TRIPID
Beispiel: Abrufer für Authentifizierungstokens erstellen
In den folgenden Beispielen wird gezeigt, wie Sie einen Abrufer für Autorisierungstokens erstellen:
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,
};
}