Menyiapkan library pelacakan fleet JavaScript

Sebelum menggunakan pustaka pelacakan armada JavaScript, pastikan Anda familier dan telah menyiapkan Fleet Engine. Untuk mengetahui detailnya, lihat Fleet Engine.

Dokumen ini menunjukkan cara mengaktifkan otorisasi antara dan Fleet Engine. Setelah permintaan Anda ke Fleet Engine memiliki telah disiapkan dengan token otorisasi yang benar, Anda akan siap untuk melacak kendaraan pada peta.

Menyiapkan otorisasi

Fleet Engine memerlukan penggunaan Token Web JSON (JWT) yang ditandatangani oleh akun layanan yang sesuai untuk panggilan metode API dari low-trust lingkungan fleksibel. 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 selanjutnya interaksi hingga kedaluwarsa atau tidak lagi valid.

Backend Anda harus melakukan autentikasi dan otorisasi terhadap Fleet Engine menggunakan mekanisme Kredensial Default Aplikasi standar. Merek 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 Armada Engine.

Bagaimana cara kerja otorisasi?

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

Otorisasi sisi server

Sebelum Anda menyiapkan otorisasi di aplikasi pelacakan Armada, backend Anda server harus dapat menyajikan Token Web JSON. Dengan cara ini, Fleet Engine mengenali permintaan yang berasal dari aplikasi Anda sebagai diizinkan untuk mengakses data dalam permintaan. Untuk petunjuk implementasi JWT sisi server, lihat Terbitkan Token Web JSON di bagian Fleet Engine Essentials.

Untuk menghasilkan token dari server saat menerapkan pelacakan Armada, lihat dokumentasi berikut ini:

Otorisasi sisi klien

Saat Anda menggunakan library pelacakan Fleet JavaScript, library ini akan meminta token dari server menggunakan pengambil token otorisasi. Hal ini dilakukan jika salah satu hal berikut benar:

  • Tidak ada token yang valid, seperti saat SDK belum memanggil pengambil di pemuatan halaman baru, atau saat pengambil belum menampilkan token.

  • Masa berlaku token telah berakhir.

  • Masa berlaku token akan berakhir dalam waktu satu menit.

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

Membuat pengambil token otorisasi

Buat pengambil token otorisasi Anda menggunakan panduan ini:

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

    • String token.

    • Nomor expiresInSeconds. Masa berlaku token berakhir dalam jangka waktu ini setelah pengambilan. Pengambil token autentikasi harus meneruskan masa berlaku waktu dalam detik, dari waktu pengambilan ke koleksi seperti yang ditampilkan di contoh.

  • Pengambil harus memanggil URL di server Anda untuk mengambil token. Ini URL--SERVER_TOKEN_URL--bergantung pada implementasi backend Anda. Tujuan 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