Configura l'SDK consumer JavaScript

Con l'SDK Consumer JavaScript, la tua app consumer può mostrare la posizione di veicoli e altre località di interesse monitorate in Fleet Engine su una mappa basata sul web. In questo modo, gli utenti consumer possono vedere l'avanzamento delle spedizioni. Questa guida presuppone che tu abbia configurato Fleet Engine con il progetto Google Cloud e le chiavi API associati. Per maggiori dettagli, consulta Fleet Engine.

Per configurare l'SDK Consumer JavaScript:

  1. Abilita l'API Maps JavaScript.
  2. Configura le autorizzazioni.

Abilitare l'API Maps JavaScript

Abilita l'API Maps JavaScript nel progetto Google Cloud Console che utilizzi per l'istanza di Fleet Engine. Per maggiori dettagli, consulta Abilitare le API nella documentazione dell'API Maps JavaScript.

Configurare le autorizzazioni

Fleet Engine richiede l'utilizzo di token web JSON (JWT) per le chiamate ai metodi API da ambienti a bassa attendibilità: smartphone e browser.

Un JWT ha origine sul server, viene firmato, criptato e passato al client per le successive interazioni con il server fino alla scadenza o alla perdita di validità.

Dettagli chiave

La tua app consumer deve autenticare gli utenti finali con il ruolo delivery_consumer del tuo progetto Google Cloud per restituire solo informazioni specifiche per i consumatori. In questo modo, Fleet Engine filtra e redige tutte le altre informazioni nelle risposte. Ad esempio, durante un'attività di indisponibilità, non vengono condivise informazioni sulla posizione con un utente finale. Consulta Ruoli degli account di servizio per le attività pianificate.

Come funziona l'autorizzazione?

L'autorizzazione con i dati di Fleet Engine prevede l'implementazione sia lato server sia lato client.

Autorizzazione lato server

Prima di configurare l'autenticazione e l'autorizzazione nella tua applicazione web, il server di backend deve essere in grado di emettere token web JSON per la tua applicazione web per l'accesso a Fleet Engine. La tua applicazione web invia questi JWT con le richieste in modo che Fleet Engine riconosca le richieste come autenticate e autorizzate ad accedere ai dati nella richiesta. Per istruzioni sull'implementazione dei JWT lato server, consulta Emettere token web JSON in Nozioni di base di Fleet Engine.

In particolare, tieni presente quanto segue per l'SDK Consumer JavaScript per il monitoraggio delle spedizioni:

Autorizzazione lato client

Quando utilizzi l'SDK Consumer JavaScript, questo richiede un token dal server utilizzando un recuperatore di token di autorizzazione. Questa operazione viene eseguita quando si verifica una delle seguenti condizioni:

  • Non esiste un token valido, ad esempio quando l'SDK non ha chiamato il recuperatore durante un nuovo caricamento della pagina o quando il recuperatore non ha restituito un token.

  • Il token è scaduto.

  • Il token scadrà entro un minuto.

In caso contrario, l'SDK Consumer JavaScript utilizza il token valido emesso in precedenza e non chiama il recuperatore.

Creare un recuperatore di token di autorizzazione

Crea il recuperatore di token di autorizzazione seguendo queste linee guida:

  • Il recuperatore deve restituire una struttura di dati con due campi, racchiusi in un Promise come segue:

    • Una stringa token.

    • Un numero expiresInSeconds. Un token scade dopo questo periodo di tempo dopo il recupero. Il recuperatore di token di autenticazione deve passare il tempo di scadenza in secondi, dal momento del recupero alla libreria, come mostrato in esempio.

  • Il recuperatore deve chiamare un URL sul server per recuperare un token. Questo URL, SERVER_TOKEN_URL, dipende dall'implementazione del backend. L' URL di esempio seguente è per il backend dell'app di esempio su GitHub:

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

Esempio: creare un recuperatore di token di autenticazione

I seguenti esempi mostrano come creare un recuperatore di token di autorizzazione:

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,
  };
}

Passaggi successivi