Configurer le SDK JavaScript Consumer

Avec le SDK JavaScript pour les consommateurs, votre application grand public peut afficher la position des véhicules et d'autres lieux d'intérêt suivis dans Fleet Engine sur une carte Web. Cela permet à vos utilisateurs de voir l'état de leurs envois. Ce guide suppose que vous avez configuré Fleet Engine avec son projet Google Cloud et ses clés API associés. Pour en savoir plus, consultez Fleet Engine.

Pour configurer le SDK client JavaScript, procédez comme suit:

  1. Activez l'API Maps JavaScript.
  2. Configurez les autorisations.

Activer l'API Maps JavaScript

Activez l'API Maps JavaScript dans le projet de la console Google Cloud que vous utilisez pour votre instance Fleet Engine. Pour en savoir plus, consultez la section Activer des API dans la documentation de l'API Maps JavaScript.

Configurer les autorisations

Pour les appels de méthode d'API à partir d'environnements à faible confiance, Fleet Engine nécessite l'utilisation de jetons Web JSON (JWT) signés par un compte de service approprié. Les environnements à faible confiance incluent les smartphones et les navigateurs. Un jeton JWT provient de votre serveur, qui est un environnement entièrement approuvé. Le jeton JWT est signé, chiffré et transmis au client pour les interactions ultérieures avec le serveur jusqu'à son expiration ou jusqu'à ce qu'il ne soit plus valide.

Votre backend doit s'authentifier et s'autoriser auprès de Fleet Engine à l'aide des mécanismes standards des identifiants par défaut de l'application. Veillez à utiliser des jetons JWT signés par un compte de service approprié. Pour obtenir la liste des rôles de compte de service, consultez les rôles de compte de service Fleet Engine dans la section Principes de base de Fleet Engine.

Votre application grand public doit authentifier vos utilisateurs finaux avec le rôle delivery_consumer de votre projet Google Cloud pour ne renvoyer que des informations spécifiques aux consommateurs. De cette manière, Fleet Engine filtre et masque toutes les autres informations des réponses. Par exemple, lors d'une tâche d'indisponibilité, aucune information de localisation n'est partagée avec un utilisateur final. Pour en savoir plus sur les tâches planifiées, consultez la section Rôles de compte de service.

En revanche, votre backend doit s'authentifier et s'autoriser auprès de Fleet Engine à l'aide de mécanismes Identifiants par défaut de l'application standards.

Comment fonctionne l'autorisation ?

L'autorisation avec les données de Fleet Engine implique une implémentation côté serveur et côté client.

Autorisation côté serveur

Avant de configurer l'authentification et l'autorisation dans votre application Web, votre serveur backend doit pouvoir émettre des jetons Web JSON à votre application Web pour accéder à Fleet Engine. Votre application Web 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 côté serveur des jetons JWT, consultez Émettre des jetons Web JSON sous Éléments essentiels de Fleet Engine.

Plus précisément, tenez compte des points suivants pour le SDK client JavaScript permettant de suivre les envois:

Autorisation côté client

Lorsque vous utilisez le SDK client JavaScript, il demande un jeton au serveur à l'aide d'un récupérateur de jetons d'autorisation. Cela se produit 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 d'un nouveau chargement de page ou lorsque le récupérateur n'a pas renvoyé de jeton.

  • Le jeton a expiré.

  • Le jeton expire dans une minute.

Sinon, le SDK client JavaScript utilise le jeton valide précédemment émis et n'appelle pas le récupérateur.

Créer un récupérateur de jetons d'autorisation

Créez votre récupérateur de jetons d'autorisation en suivant ces consignes:

  • Le récupérateur doit renvoyer une structure de données avec deux champs, encapsulés dans un Promise comme suit:

    • Une chaîne token.

    • Un nombre expiresInSeconds. Un jeton expire au bout de ce délai après l'extraction. Le récupérateur de jetons d'authentification doit transmettre la date d'expiration en secondes, à partir du moment de la récupération vers la bibliothèque, comme indiqué dans l'exemple.

  • Le récupérateur doit appeler une URL sur votre serveur pour récupérer un jeton. Cette URL (SERVER_TOKEN_URL) dépend de votre implémentation du backend. L'exemple d'URL suivant est destiné au backend de l'application exemple sur GitHub:

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

Exemple : Créer un récupérateur de jetons d'authentification

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,
  };
}

Étape suivante