Com o SDK do consumidor JavaScript, seu app pode mostrar a localização de veículos e outros locais de interesse rastreados no Fleet Engine em um mapa baseado na Web. Isso permite que seus consumidores vejam o progresso da jornada do motorista. Este guia pressupõe que você configurou o Fleet Engine com as chaves de API e o projeto do Google Cloud associados. Consulte Fleet Engine para mais detalhes.
Para configurar o SDK do consumidor JavaScript, siga estas etapas:
Ativar a API Maps JavaScript
Ative a API JavaScript Maps no console do Google Cloud. Para mais detalhes, consulte Ativar APIs na documentação do Google Cloud. Isso ativa o SDK do consumidor para JavaScript.
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 adequada. Os ambientes de baixa confiança incluem smartphones e navegadores. Um JWT é originado no seu servidor, que é um ambiente totalmente confiável. O JWT é assinado, criptografado e transmitido ao cliente para interações subsequentes do servidor até expirar ou perder a validade.
O back-end precisa autenticar e autorizar o Fleet Engine usando mecanismos padrão de credenciais padrão do aplicativo. Use JWTs assinados por uma conta de serviço adequada. Para uma lista de papéis de conta de serviço, consulte os papéis de conta de serviço do Fleet Engine em Noções básicas do Fleet Engine.
Por outro lado, o back-end precisa se autenticar e autorizar no Fleet Engine usando mecanismos padrão do Application Default Credentials.
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 servidor
Antes de configurar a autenticação e a autorização no seu aplicativo baseado na Web, o servidor de back-end precisa emitir tokens da Web do JSON para o aplicativo baseado na Web para ter acesso ao Fleet Engine. Seu aplicativo baseado na 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 do JWT no lado do servidor, consulte Emitir tokens da Web JSON em Fundamentos do mecanismo de frota.
Especificamente, lembre-se do seguinte para o SDK do consumidor JavaScript para compartilhar o progresso da viagem:- Diretrizes gerais para emissão de JSON Web Tokens
- Diretrizes do JWT para viagens sob demanda
- Exemplo de token para uma operação de consumidor
Autorização do lado do cliente
Quando você usa o SDK do consumidor JavaScript, ele solicita um token do servidor usando um buscador 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 retorna com um token.
O token expirou.
O token está prestes a expirar em um minuto.
Caso contrário, o SDK de consumidor JavaScript vai usar o token válido emitido anteriormente e 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 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/consumer/TRIPID
Exemplo: criar um coletor de tokens de autenticação
Os exemplos a seguir mostram como criar um coletor 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,
};
}