Configura la biblioteca de seguimiento de flota de JavaScript

Antes de usar la biblioteca de seguimiento de la flota de JavaScript, asegúrate de conocer Fleet Engine y configurarlo. Para obtener más detalles, consulta Motor de flota.

En este documento, se muestra cómo habilitar la autorización entre la aplicación de la página web y Fleet Engine. Una vez que tus solicitudes a Fleet Engine se hayan configurado con los tokens de autorización correctos, estarás listo para rastrear un vehículo en un mapa.

Configura la autorización

Para las llamadas a métodos de API desde entornos de baja confianza, Fleet Engine requiere el uso de tokens web JSON (JWT) firmados por una cuenta de servicio adecuada. Los entornos de baja confianza incluyen smartphones y navegadores. Un JWT se origina en tu servidor, que es un entorno de confianza total. El JWT se firma, encripta y pasa al cliente para interacciones posteriores con el servidor hasta que venza o ya no sea válido.

Tu backend debe autenticarse y autorizarse en Fleet Engine mediante los mecanismos estándar de credenciales predeterminadas de la aplicación. Asegúrate de usar JWTs firmados por una cuenta de servicio adecuada. Para obtener una lista de las funciones de las cuentas de servicio, consulta las funciones de la cuenta de servicio de Flet Engine en los Conceptos básicos de Flet Engine.

Por el contrario, tu backend debe autenticarse y autorizarse en Fleet Engine mediante los mecanismos estándar de credenciales predeterminadas de la aplicación.

¿Cómo funciona la autorización?

La autorización con datos de Fleet Engine implica una implementación tanto del servidor como del cliente.

Autorización del servidor

Antes de configurar la autenticación y la autorización en tu aplicación de seguimiento de flotas, el servidor de backend debe poder emitir tokens web JSON a tu aplicación de seguimiento de flotas para acceder a Fleet Engine. La aplicación de seguimiento de flota envía estos JWT con sus solicitudes para que Fleet Engine reconozca las solicitudes como autenticadas y autorizadas para acceder a los datos de la solicitud. Para obtener instrucciones sobre la implementación de JWT del servidor, consulta Emite tokens web JSON en Nociones básicas del motor de flota.

Para generar tokens desde tu servidor cuando implementas el seguimiento de flotas, consulta lo siguiente:

Autorización del cliente

Cuando usas la biblioteca de seguimiento de la flota de JavaScript, esta solicita un token al servidor mediante un recuperador de tokens de autorización. Hace esto cuando se cumple alguna de las siguientes condiciones:

  • No existe un token válido, como cuando el SDK no llamó al recuperador en una carga de página nueva o cuando el recuperador no mostró un token.

  • El token caducó.

  • El token está en el plazo de un minuto a partir de su vencimiento.

De lo contrario, la biblioteca de seguimiento de flotas de JavaScript usa el token válido emitido anteriormente y no llama al recuperador.

Crea un recuperador de tokens de autorización

Crea tu recuperador de tokens de autorización con estos lineamientos:

  • El recuperador debe mostrar una estructura de datos con dos campos, unidos en un Promise de la siguiente manera:

    • Una cadena token

    • Un número expiresInSeconds. Un token vence en esta cantidad de tiempo después de la recuperación. El recuperador de tokens de autenticación debe pasar el tiempo de vencimiento en segundos, desde el momento de la recuperación hasta la biblioteca, como se muestra en el ejemplo.

  • El recuperador debe llamar a una URL de tu servidor para recuperar un token. Esta URL (SERVER_TOKEN_URL) depende de la implementación de tu backend. La siguiente URL de ejemplo es para el backend de la app de ejemplo en GitHub:

    • https://SERVER_URL/token/fleet_reader

Ejemplo: Crea un recuperador de tokens de autorización

En los siguientes ejemplos, se muestra cómo crear un recuperador de tokens de autorización:

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

¿Qué sigue?