Antes de usar a biblioteca de rastreamento de frotas do JavaScript, confira se você conhece e configurou o Fleet Engine. Saiba mais em Fleet Engine.
Este documento mostra como ativar a autorização entre o app da página da Web e o Fleet Engine. Depois que suas solicitações para o Fleet Engine forem configuradas com os tokens de autorização corretos, você poderá rastrear um veículo em um mapa.
configurar a autorização
Para chamadas de método de API de ambientes de baixa confiança, o Fleet Engine exige o uso de JSON Web Tokens (JWTs) assinados por uma conta de serviço apropriada. Os ambientes de baixa confiança incluem smartphones e navegadores. Um JWT é originado no servidor, que é um ambiente totalmente confiável. O JWT é assinado, criptografado e transmitido ao cliente para interações posteriores do servidor até expirar ou deixar de ser válido.
Seu back-end precisa se autenticar e autorizar no Fleet Engine usando mecanismos padrão do Application Default Credentials. Use JWTs assinados por uma conta de serviço apropriada. Para uma lista de papéis da conta de serviço, consulte os papéis da conta de serviço do Fleet Engine em Noções básicas do mecanismo de frota.
Por outro lado, o back-end precisa autenticar e autorizar o Fleet Engine usando mecanismos padrão de credenciais padrão do aplicativo.
Como funciona a autorização?
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 seu aplicativo de rastreamento da Flotta, o servidor de back-end precisa emitir tokens da Web JSON para o aplicativo de rastreamento da Flotta para acesso ao Fleet Engine. O aplicativo de rastreamento do Fleet 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 do JWT no lado do servidor, consulte Emitir tokens da Web JSON em Fundamentos do mecanismo de frota.
Para gerar tokens do seu servidor ao implementar o rastreamento de frota, consulte o seguinte:- Diretrizes gerais para emissão de JSON Web Tokens, incluindo seções para viagens sob demanda e tarefas programadas
- Viagens sob demanda: Exemplo de token para uma operação de servidor de back-end
- Tarefas agendadas: token de exemplo para rastrear todas as tarefas e veículos na frota
Autorização do lado do cliente
Quando você usa a biblioteca de rastreamento JavaScript Fleet, ela solicita um token do servidor usando um coletor de tokens de autorização. Isso acontece quando uma das seguintes condições é verdadeira:
Não existe um token válido, como quando o SDK não chama o coletor em um novo carregamento de página ou quando o coletor não retorna com um token.
O token expirou.
O token está prestes a expirar em um minuto.
Caso contrário, a biblioteca de rastreamento da frota do JavaScript usa o token válido emitido anteriormente e não chama o fetcher.
Criar um extrator de token de autorização
Crie seu coletor de tokens de autorização seguindo estas diretrizes:
O fetcher 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 após esse período após a busca. O coletor de tokens de autenticação precisa passar o tempo de validade em segundos, a partir do momento da busca até a biblioteca, como mostrado no exemplo.
O coletor 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 back-end do app de exemplo no GitHub:https://SERVER_URL/token/fleet_reader
Exemplo: criar um extrator de tokens 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,
};
}