Antes de usar a biblioteca de rastreamento de frota JavaScript, verifique se você está conhece e configurou o Fleet Engine. Para mais detalhes, consulte Mecanismo de frota.
Este documento mostra como ativar a autorização entre as de uma página da Web e do Fleet Engine. Quando suas solicitações ao Fleet Engine configurado com os tokens de autorização corretos, estará pronto para rastrear um veículo em um mapa.
configurar a autorização
O Fleet Engine exige o uso de JSON Web Tokens (JWTs) assinados por uma a conta de serviço apropriada para chamadas de método de API de objetos de baixa confiança ambientes. Ambientes de baixa confiança incluem smartphones e navegadores. Um JWT tem origem no seu servidor, que é um ambiente totalmente confiável. O JWT é assinado, criptografado e passado ao cliente para o próximo servidor interações até que expirem ou não sejam mais válidas.
Seu back-end deve autenticar e autorizar o Fleet Engine usando mecanismos padrão do Application Default Credentials. Marca use JWTs assinados por uma conta de serviço apropriada. Para um 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.
Como funciona a autorização?
A autorização com dados do Fleet Engine envolve o lado do servidor e do cliente implementação.
Autorização do servidor
Antes de configurar a autorização no aplicativo de rastreamento de frota, seu back-end servidor deve ser capaz de exibir JSON Web Tokens. Dessa forma, o Fleet Engine reconhece as solicitações provenientes do seu aplicativo como autorizadas a acessar os dados da solicitação. Para instruções sobre a implementação do JWT no servidor, consulte Emita Tokens JSON Web nos Fundamentos do mecanismo de frota.
Para gerar tokens do seu servidor ao implementar o rastreamento de frota, consulte as seguintes:- Diretrizes gerais para a emissão de JSON Web Tokens, incluindo para viagens sob demanda e tarefas programadas
- Viagens sob demanda: Exemplo de token para uma operação de servidor de back-end
- Tarefas agendadas: exemplo de token 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 uma coletor de tokens de autorização. Isso é feito 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 retornou com um token.
O token expirou.
O token está dentro de um minuto depois de expirar.
Caso contrário, a biblioteca de rastreamento JavaScript Fleet usa o token válido emitido anteriormente e não não chamar o coletor.
Criar um coletor de tokens de autorização
Crie seu coletor de tokens de autorização seguindo estas diretrizes:
O coletor precisa retornar uma estrutura de dados com dois campos, agrupados em um
Promise
da seguinte maneira:Uma string
token
.Um número
expiresInSeconds
. Um token expira neste período após a busca. O coletor de tokens de autenticação precisa passar o tempo em segundos, a partir do momento da busca até a biblioteca, como mostrado no o exemplo.
O coletor precisa chamar um URL no seu servidor para recuperar um token. Isso O URL (
SERVER_TOKEN_URL
) depende da implementação do back-end. O o seguinte URL de exemplo é para o back-end do app de exemplo no GitHub:https://SERVER_URL/token/fleet_reader
Exemplo: criar um coletor 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,
};
}