Configurar o SDK JavaScript Consumer

Com o SDK do consumidor JavaScript, seu app para consumidores pode mostrar a localização de veículos e outros locais de interesse rastreados no Fleet Engine em um mapa da Web. Assim, os usuários consumidores podem acompanhar o progresso dos envios. Este guia pressupõe que você já configurou o Fleet Engine com o projeto do Google Cloud e as chaves de API associados. Consulte Fleet Engine para mais detalhes.

Configure o SDK do consumidor JavaScript seguindo estas etapas:

  1. Ative a API Maps JavaScript.
  2. Configurar a autorização.

Ativar a API Maps JavaScript

Ative a API Maps JavaScript no projeto do console do Google Cloud que você usa para sua instância do Fleet Engine. Para mais detalhes, consulte Ativar APIs na documentação da API Maps JavaScript.

Configurar a autorização

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

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

Detalhes importantes

Seu app para consumidores precisa autenticar os usuários finais com a função delivery_consumer do projeto do Google Cloud para retornar apenas informações específicas do consumidor. Dessa forma, o Fleet Engine filtra e encobre todas as outras informações nas respostas. Por exemplo, durante uma tarefa de indisponibilidade, nenhuma informação de local é compartilhada com um usuário final. Consulte Funções da conta de serviço para tarefas programadas.

Como funciona a autorização?

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

Autorização do lado do servidor

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

Em especial, lembre-se do seguinte para o SDK do consumidor JavaScript para rastreamento de envios:

Autorização do lado do cliente

Ao usar o SDK do consumidor JavaScript, ele solicita um token do servidor usando um buscador de tokens de autorização. Isso acontece quando uma das seguintes condições é verdadeira:

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

  • O token expirou.

  • O token está a um minuto de expirar.

Caso contrário, o SDK do consumidor JavaScript usa o token válido emitido anteriormente e não chama o fetcher.

Criar um buscador de tokens de autorização

Crie seu buscador de tokens de autorização usando estas diretrizes:

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

    • Uma string token.

    • Um número expiresInSeconds. Um token expira após esse período depois de ser buscado. O buscador de tokens 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 buscador precisa chamar um URL no seu servidor para recuperar um token. Esse URL, o SERVER_TOKEN_URL, depende da implementação do back-end. O URL de exemplo a seguir é para o backend do app de exemplo no GitHub:

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

Exemplo: criar um buscador de tokens de autenticação

Os exemplos a seguir mostram como criar um buscador de tokens 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