Avant d'utiliser la bibliothèque de suivi de flotte JavaScript, assurez-vous de bien connaître Fleet Engine et de l'avoir configuré. Pour en savoir plus, consultez Fleet Engine.
Ce document explique comment activer l'autorisation entre l'application de page Web et Fleet Engine. Une fois que vos requêtes adressées à Fleet Engine ont été configurées avec les jetons d'autorisation appropriés, vous pouvez suivre un véhicule sur une carte.
Configurer les autorisations
Fleet Engine nécessite l'utilisation de jetons Web JSON (JWT) pour les appels de méthode d'API depuis des environnements peu fiables : smartphones et navigateurs.
Un jeton JWT est généré sur votre serveur, signé, chiffré et transmis au client pour les interactions ultérieures avec le serveur, jusqu'à ce qu'il expire ou ne soit plus valide.
Informations essentielles
- Utilisez les identifiants par défaut de l'application pour vous authentifier et vous autoriser auprès de Fleet Engine.
- Utilisez un compte de service approprié pour signer les jetons JWT. Consultez les rôles Compte de service Fleet Engine dans Principes de base de Fleet Engine.
Comment fonctionne l'autorisation ?
L'autorisation avec les données Fleet Engine implique une mise en œuvre côté serveur et côté client.
Autorisation côté serveur
Avant de configurer l'authentification et l'autorisation dans votre application de suivi de flotte, votre serveur backend doit être en mesure d'émettre des jetons Web JSON pour votre application de suivi de flotte afin d'accéder à Fleet Engine. Votre application de suivi de parc envoie ces jetons JWT avec ses requêtes afin que Fleet Engine les reconnaisse comme authentifiées et autorisées à accéder aux données de la requête. Pour obtenir des instructions sur l'implémentation des JWT côté serveur, consultez Émettre des jetons Web JSON sous Principes de base de Fleet Engine.
Pour générer des jetons à partir de votre serveur lorsque vous implémentez le suivi de parc, consultez les informations suivantes :- Consignes générales pour l'émission de jetons Web JSON, y compris des sections pour les trajets à la demande et les tâches planifiées
- Trajets à la demande : Exemple de jeton pour une opération de serveur backend
- Tâches planifiées : Exemple de jeton pour suivre toutes les tâches et tous les véhicules du parc
Autorisation côté client
Lorsque vous utilisez la bibliothèque de suivi de flotte JavaScript, elle demande un jeton au serveur à l'aide d'un récupérateur de jetons d'autorisation. Il le fait lorsque l'une des conditions suivantes est remplie :
Aucun jeton valide n'existe, par exemple lorsque le SDK n'a pas appelé le récupérateur lors du chargement d'une nouvelle page ou lorsque le récupérateur n'a pas renvoyé de jeton.
Le jeton est arrivé à expiration.
Le jeton expire dans une minute.
Sinon, la bibliothèque de suivi de flotte JavaScript utilise le jeton valide précédemment émis et n'appelle pas l'outil de récupération.
Créer un récupérateur de jetons d'autorisation
Créez votre outil de récupération de jetons d'autorisation en suivant ces consignes :
Le récupérateur doit renvoyer une structure de données avec deux champs, enveloppés dans un
Promisecomme suit :Une chaîne
token.Un nombre
expiresInSeconds. Un jeton expire au bout de cette durée après avoir été récupéré. Le récupérateur de jetons d'authentification doit transmettre le délai d'expiration en secondes, à partir du moment de la récupération, à la bibliothèque, comme indiqué dans l'exemple.
L'outil de récupération doit appeler une URL sur votre serveur pour récupérer un jeton. Cette URL (
SERVER_TOKEN_URL) dépend de l'implémentation de votre backend. L'URL d'exemple suivante concerne le backend de l'application exemple sur GitHub :https://SERVER_URL/token/fleet_reader
Exemple : Créer un récupérateur de jetons d'autorisation
Les exemples suivants montrent comment créer un récupérateur de jetons d'autorisation :
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,
};
}