Com o SDK do consumidor JavaScript, o aplicativo para o consumidor pode mostrar a localização de veículos e outros locais de interesse rastreados no Fleet Engine em um mapa da Web. Isso permite que os usuários do consumidor vejam o progresso das remessas. Este guia pressupõe que você configurou o Fleet Engine com o projeto na nuvem do Google Cloud e as chaves de API associadas. Consulte o Fleet Engine para mais detalhes.
Configure o SDK do consumidor JavaScript seguindo estas etapas:
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 de API de ambientes de baixa confiança: smartphones e navegadores.
Um JWT é originado no servidor, assinado, criptografado e transmitido ao cliente para interações subsequentes do servidor até expirar ou não ser mais válido.
Detalhes importantes
- Use Application Default Credentials para autenticar e autorizar o Fleet Engine.
- Use uma conta de serviço adequada para assinar JWTs. Consulte Papéis da conta de serviço do Fleet Engine em Noções básicas do Fleet Engine.
delivery_consumer do projeto do Google Cloud para retornar apenas informações específicas do consumidor. Dessa forma, o Fleet Engine filtra e edita todas as outras informações nas respostas. Por exemplo, durante uma tarefa de indisponibilidade, nenhuma informação de localização é compartilhada com um usuário final. Consulte Papéis da conta de serviço
para tarefas agendadas.
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 da Web, o servidor de back-end precisa emitir JSON Web Tokens para o aplicativo da Web para acesso ao Fleet Engine. O aplicativo da Web 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.
Em especial, lembre-se do seguinte para o SDK do consumidor JavaScript para rastreamento de remessas:- Diretrizes gerais para emitir JSON Web Tokens
- Diretrizes de JWT para tarefas agendadas
- Exemplo de token para um aplicativo para o consumidor
Autorização do lado do cliente
Ao usar o SDK do consumidor JavaScript, ele solicita um token do servidor usando um buscador de token de autorização. Isso acontece quando qualquer uma das seguintes condições é verdadeira:
Não existe 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, o SDK do consumidor 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, envolvida em uma
Promiseda 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/delivery_consumer/TRACKING_ID
Exemplo: criar um coletor de token de autenticaçã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,
};
}