Antes de usar la biblioteca de seguimiento de flota de JavaScript, asegúrate de conocer y configurar Fleet Engine. Para obtener más información, consulta Fleet Engine.
En este documento, se muestra cómo habilitar la autorización entre la app de la página web y Fleet Engine. Una vez que tus solicitudes a Fleet Engine se configuren con los tokens de autorización correctos, podrás hacer un seguimiento de un vehículo en un mapa.
Configura la autorización
Fleet Engine requiere el uso de tokens web JSON (JWTs) para las llamadas a métodos de la API desde entornos de baja confianza: smartphones y navegadores.
Un JWT se origina en tu servidor, se firma, se encripta y se pasa al cliente para las interacciones posteriores del servidor hasta que vence o ya no es válido.
Detalles clave
- Usa las credenciales predeterminadas de la aplicación para autenticar y autorizar en Fleet Engine.
- Usa una cuenta de servicio adecuada para firmar JWTs. Consulta los roles de la cuenta de servicio de Fleet Engine en Conceptos básicos de Fleet Engine.
¿Cómo funciona la autorización?
La autorización con datos de Fleet Engine implica la implementación del servidor y del cliente.
Autorización del servidor
Antes de configurar la autenticación y la autorización en tu aplicación de seguimiento de flota, tu servidor de backend debe poder emitir tokens web JSON a tu aplicación de seguimiento de flota para acceder a Fleet Engine. Tu aplicación de seguimiento de flota envía estos JWTs 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 Aspectos básicos de Fleet Engine.
Para generar tokens desde tu servidor cuando implementes el seguimiento de flota, consulta lo siguiente:- Lineamientos generales para emitir tokens web JSON, incluidas las secciones para viajes a pedido y tareas programadas
- Viajes a pedido: Token de ejemplo para una operación del servidor de backend
- Tareas programadas: Token de ejemplo para hacer un seguimiento de todas las tareas y vehículos de la flota
Autorización del cliente
Cuando usas la biblioteca de seguimiento de flota de JavaScript, solicita un token del servidor con un captador de tokens de autorización. Esto sucede cuando se cumple alguna de las siguientes condiciones:
No existe un token válido, por ejemplo, cuando el SDK no llamó al captador en una carga de página nueva o cuando el captador no regresó con un token.
El token ya venció.
El token está a un minuto de vencer.
De lo contrario, la biblioteca de seguimiento de flota de JavaScript usa el token válido emitido anteriormente y no llama al captador.
Crea un captador de tokens de autorización
Crea tu captador de tokens de autorización con estos lineamientos:
El captador debe mostrar una estructura de datos con dos campos, envuelta en una
Promisede la siguiente manera:Una cadena
token.Un número
expiresInSeconds. Un token vence en este período después de la recuperación. El captador de tokens de autenticación debe pasar la hora de vencimiento en segundos, desde el momento de la recuperación hasta la biblioteca, como se muestra en el ejemplo.
El captador debe llamar a una URL en tu servidor para recuperar un token. Esta URL (la
SERVER_TOKEN_URL) depende de la implementación de tu backend. La siguiente URL de ejemplo es para el backend de la app de muestra en GitHub:https://SERVER_URL/token/fleet_reader
Ejemplo: Crea un captador de tokens de autorización
En los siguientes ejemplos, se muestra cómo crear un captador 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,
};
}