Menyiapkan library pelacakan fleet JavaScript

Sebelum menggunakan library pelacakan armada JavaScript, pastikan Anda sudah memahami dan menyiapkan Fleet Engine. Untuk mengetahui detailnya, lihat Fleet Engine.

Dokumen ini menunjukkan cara mengaktifkan otorisasi antara aplikasi halaman web dan Fleet Engine. Setelah permintaan ke Fleet Engine disiapkan dengan token otorisasi yang benar, Anda akan siap untuk melacak kendaraan di peta.

Menyiapkan otorisasi

Untuk panggilan metode API dari lingkungan dengan tingkat kepercayaan rendah, Fleet Engine memerlukan penggunaan Token Web JSON (JWT) yang ditandatangani oleh akun layanan yang sesuai. Lingkungan kepercayaan rendah mencakup smartphone dan browser. JWT berasal dari server Anda, yang merupakan lingkungan yang sepenuhnya tepercaya. JWT ditandatangani, dienkripsi, dan diteruskan ke klien untuk interaksi server berikutnya hingga masa berlakunya habis atau tidak lagi valid.

Backend Anda harus melakukan autentikasi dan otorisasi terhadap Fleet Engine menggunakan mekanisme Kredensial Default Aplikasi standar. Pastikan untuk menggunakan JWT yang telah ditandatangani oleh akun layanan yang sesuai. Untuk daftar peran akun layanan, lihat peran akun layanan Fleet Engine di Dasar-Dasar Fleet Engine.

Sebaliknya, backend Anda harus mengautentikasi dan memberikan otorisasi ke Fleet Engine menggunakan mekanisme Kredensial Default Aplikasi standar.

Bagaimana cara kerja otorisasi?

Otorisasi dengan data Fleet Engine melibatkan implementasi sisi server dan sisi klien.

Otorisasi sisi server

Sebelum menyiapkan autentikasi dan otorisasi di aplikasi pelacakan Armada, server backend Anda harus dapat menerbitkan Token Web JSON ke aplikasi pelacakan Armada untuk mengakses Fleet Engine. Aplikasi pelacakan Armada Anda mengirimkan JWT ini bersama permintaannya, sehingga Fleet Engine mengenali permintaan tersebut sebagaimana telah diautentikasi dan diberi otorisasi untuk mengakses data dalam permintaan tersebut. Untuk petunjuk penerapan JWT sisi server, lihat Mengeluarkan Token Web JSON di bagian Dasar-Dasar Fleet Engine.

Untuk membuat token dari server Anda saat menerapkan pelacakan Flotte, lihat hal berikut:

Otorisasi sisi klien

Saat Anda menggunakan library pelacakan Flotte JavaScript, library tersebut akan meminta token dari server menggunakan pengambil token otorisasi. Tindakan ini dilakukan jika salah satu hal berikut terpenuhi:

  • Tidak ada token yang valid, seperti saat SDK belum memanggil pengambil pada muat ulang halaman, atau saat pengambil belum ditampilkan dengan token.

  • Masa berlaku token telah berakhir.

  • Masa berlaku token akan berakhir dalam waktu satu menit.

Jika tidak, library pelacakan Fleet JavaScript akan menggunakan token valid yang dikeluarkan sebelumnya dan tidak memanggil pengambil.

Membuat pengambil token otorisasi

Buat pengambil token otorisasi menggunakan panduan ini:

  • Pengambil harus menampilkan struktur data dengan dua kolom, yang digabungkan dalam Promise sebagai berikut:

    • String token.

    • Nomor expiresInSeconds. Masa berlaku token akan berakhir dalam jangka waktu ini setelah pengambilan. Pengambil token autentikasi harus meneruskan waktu berakhir dalam satuan detik, dari waktu pengambilan ke library seperti yang ditunjukkan dalam contoh.

  • Pengambil harus memanggil URL di server Anda untuk mengambil token. URL -SERVER_TOKEN_URL--ini bergantung pada implementasi backend Anda. Contoh URL berikut adalah untuk contoh backend aplikasi di GitHub:

    • https://SERVER_URL/token/fleet_reader

Contoh - Membuat pengambil token otorisasi

Contoh berikut menunjukkan cara membuat pengambil token otorisasi:

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

Langkah berikutnya