Configurar a biblioteca de rastreamento de frota em JavaScript

Antes de usar a biblioteca de rastreamento de frota do JavaScript, confira se você conhece e configurou o Fleet Engine. Para mais detalhes, consulte Fleet Engine.

Este documento mostra como ativar a autorização entre o app da página da Web e o Fleet Engine. Depois que as solicitações ao Fleet Engine forem configuradas com os tokens de autorização corretos, você poderá rastrear um veículo em um mapa.

Configurar a autorização

O Fleet Engine exige o uso de JSON Web Tokens (JWTs) para chamadas de método de API de ambientes de baixa confiança: smartphones e navegadores.

Um JWT é originado no seu servidor, assinado, criptografado e transmitido ao cliente para interações subsequentes do servidor até expirar ou não ser mais válido.

Principais detalhes

Como a autorização funciona?

A autorização com dados do Fleet Engine envolve a implementação do lado do servidor e do lado do cliente.

Autorização do lado do servidor

Antes de configurar a autenticação e a autorização no aplicativo de rastreamento de frota, o servidor de back-end precisa emitir JSON Web Tokens para o aplicativo de rastreamento de frota para acesso ao Fleet Engine. O aplicativo de rastreamento de frota envia esses JWTs com as solicitações para que o Fleet Engine reconheça as solicitações como autenticadas e autorizadas a acessar os dados na solicitação. Para instruções sobre a implementação de JWT do lado do servidor, consulte Emitir JSON Web Tokens em Noções básicas do Fleet Engine.

Para gerar tokens do servidor ao implementar o rastreamento de frota, consulte o seguinte:

Autorização do lado do cliente

Quando você usa a biblioteca de rastreamento de frota do JavaScript, ela solicita um token do servidor usando um coletor de token de autorização. Isso acontece quando qualquer uma das seguintes condições é verdadeira:

  • Não há um token válido, como quando o SDK não chamou o buscador em um novo carregamento de página ou quando o buscador não retornou com um token.

  • O token expirou.

  • O token está a um minuto de expirar.

Caso contrário, a biblioteca de rastreamento de frota do JavaScript usa o token válido emitido anteriormente e não chama o buscador.

Criar um coletor de token de autorização

Crie seu coletor de token de autorização usando estas diretrizes:

  • O buscador precisa retornar uma estrutura de dados com dois campos, envolvidos em um Promise da seguinte maneira:

    • Uma string token.

    • Um número expiresInSeconds. Um token expira nesse período após a busca. O buscador de token de autenticação precisa transmitir o tempo de expiração em segundos, desde o momento da busca até a biblioteca, conforme mostrado no exemplo.

  • O coletor precisa chamar um URL no servidor para recuperar um token. Esse URL, SERVER_TOKEN_URL, depende da implementação de back-end. O exemplo de URL a seguir é para o back-end do app de exemplo no GitHub:

    • https://SERVER_URL/token/fleet_reader

Exemplo: criar um buscador de token de autorização

Os exemplos a seguir mostram como criar um coletor de token de autorização:

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

A seguir