Dengan JavaScript Consumer SDK, aplikasi konsumen Anda dapat menampilkan lokasi kendaraan dan lokasi minat lainnya yang dilacak di Fleet Engine pada peta berbasis web. Hal ini memungkinkan konsumen Anda melihat progres perjalanan pengemudi. Panduan ini mengasumsikan bahwa Anda telah menyiapkan Fleet Engine dengan kunci API dan project Google Cloud terkait. Lihat Fleet Engine untuk mengetahui detailnya.
Siapkan JavaScript Consumer SDK dengan mengikuti langkah-langkah berikut:
Mengaktifkan Maps JavaScript API
Aktifkan Maps JavaScript API di Konsol Google Cloud. Untuk detail selengkapnya, lihat Mengaktifkan API dalam dokumentasi Google Cloud. Tindakan ini akan mengaktifkan Consumer SDK untuk JavaScript.
Menyiapkan otorisasi
Untuk panggilan metode API dari lingkungan low-trust, Fleet Engine mengharuskan 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 mengetahui daftar peran akun layanan, lihat peran akun layanan Armada Engine di Dasar-Dasar Fleet Engine.
Sebaliknya, backend Anda harus melakukan autentikasi dan otorisasi terhadap 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 berbasis web, server backend Anda harus dapat menerbitkan Token Web JSON ke aplikasi berbasis web untuk mengakses Fleet Engine. Aplikasi berbasis web 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 tentang implementasi JWT sisi server, lihat Masalah Token Web JSON di bagian Fleet Engine Essentials.
Khususnya, perhatikan hal berikut untuk JavaScript Consumer SDK untuk membagikan progres perjalanan:- Panduan umum untuk menerbitkan Token Web JSON
- Panduan JWT perjalanan on demand
- Contoh token untuk operasi konsumen
Otorisasi sisi klien
Saat Anda menggunakan JavaScript Consumer SDK, SDK 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 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, JavaScript Consumer SDK 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 dalam
Promise
sebagai berikut:String
token
.Nomor
expiresInSeconds
. Masa berlaku token akan berakhir dalam 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 ini--
SERVER_TOKEN_URL
--bergantung pada implementasi backend Anda. Contoh URL berikut adalah untuk backend aplikasi contoh di GitHub:https://SERVER_URL/token/consumer/TRIPID
Contoh -- Membuat pengambil token autentikasi
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,
};
}