Với JavaScript Consumer SDK, ứng dụng dành cho người tiêu dùng có thể hiển thị vị trí của xe và các vị trí quan tâm khác được theo dõi trong Fleet Engine trên bản đồ dựa trên nền tảng web. Điều này giúp người dùng là người tiêu dùng có thể xem tiến trình vận chuyển hàng của họ. Hướng dẫn này giả định rằng bạn đã thiết lập Fleet Engine với dự án trên đám mây Google Cloud và khoá API được liên kết. Xem Fleet Engine để biết thông tin chi tiết.
Bạn thiết lập JavaScript Consumer SDK theo các bước sau:
Bật Maps JavaScript API
Bật Maps JavaScript API trong dự án Google Cloud Console mà bạn sử dụng cho thực thể Fleet Engine. Để biết thêm thông tin chi tiết, hãy xem Bật API trong tài liệu về Maps JavaScript API.
Thiết lập lệnh uỷ quyền
Fleet Engine yêu cầu sử dụng Mã thông báo web JSON (JWT) cho các lệnh gọi phương thức API từ môi trường có độ tin cậy thấp: điện thoại thông minh và trình duyệt.
JWT bắt nguồn từ máy chủ của bạn, được ký, mã hoá và truyền đến ứng dụng để tương tác với máy chủ sau đó cho đến khi hết hạn hoặc không còn hợp lệ.
Thông tin chính
- Sử dụng Thông tin xác thực mặc định của ứng dụng để xác thực và uỷ quyền cho Fleet Engine.
- Sử dụng tài khoản dịch vụ thích hợp để ký JWT. Xem Vai trò của tài khoản dịch vụ Fleet Engine trong Thông tin cơ bản về Fleet Engine.
delivery_consumer từ dự án Google Cloud để chỉ trả về thông tin dành riêng cho người tiêu dùng. Bằng cách này, Fleet Engine sẽ lọc và chỉnh sửa tất cả thông tin khác trong các phản hồi. Ví dụ: trong một tác vụ không có sẵn, không có thông tin vị trí nào được chia sẻ với người dùng cuối. Xem bài viết Vai trò của tài khoản dịch vụ
cho các tác vụ theo lịch.
Lệnh uỷ quyền hoạt động như thế nào?
Lệnh uỷ quyền với dữ liệu Fleet Engine bao gồm cả việc triển khai phía máy chủ và phía máy khách.
Lệnh uỷ quyền phía máy chủ
Trước khi bạn thiết lập quy trình xác thực và uỷ quyền trong ứng dụng dựa trên web, máy chủ phụ trợ phải có khả năng phát hành Mã thông báo web JSON cho ứng dụng dựa trên web để truy cập vào Fleet Engine. Ứng dụng dựa trên web sẽ gửi các JWT này cùng với yêu cầu để Fleet Engine nhận dạng các yêu cầu là đã xác thực và được uỷ quyền truy cập vào dữ liệu trong yêu cầu. Để biết hướng dẫn về cách triển khai JWT phía máy chủ, hãy xem bài viết Phát hành mã thông báo web JSON trong phần Thông tin cơ bản về Fleet Engine.
Cụ thể, hãy lưu ý những điều sau đây đối với JavaScript Consumer SDK để theo dõi lô hàng:- Nguyên tắc chung để phát hành Mã thông báo web JSON
- Nguyên tắc về JWT cho các tác vụ theo lịch
- Mã thông báo mẫu cho ứng dụng dành cho người tiêu dùng
Lệnh uỷ quyền phía máy khách
Khi bạn sử dụng JavaScript Consumer SDK, SDK này sẽ yêu cầu một mã thông báo từ máy chủ bằng cách sử dụng trình tìm nạp mã thông báo uỷ quyền. SDK này thực hiện việc này khi bất kỳ điều kiện nào sau đây là đúng:
Không có mã thông báo hợp lệ, chẳng hạn như khi SDK chưa gọi trình tìm nạp khi tải trang mới hoặc khi trình tìm nạp chưa trả về mã thông báo.
Mã thông báo đã hết hạn.
Mã thông báo sắp hết hạn trong vòng một phút.
Nếu không, JavaScript Consumer SDK sẽ sử dụng mã thông báo hợp lệ đã phát hành trước đó và không gọi trình tìm nạp.
Tạo trình tìm nạp mã thông báo uỷ quyền
Tạo trình tìm nạp mã thông báo uỷ quyền theo các nguyên tắc sau:
Trình tìm nạp phải trả về một cấu trúc dữ liệu có hai trường, được gói trong một
Promisenhư sau:Một chuỗi
token.Một số
expiresInSeconds. Mã thông báo sẽ hết hạn trong khoảng thời gian này sau khi tìm nạp. Trình tìm nạp mã thông báo xác thực phải truyền thời gian hết hạn tính bằng giây, từ thời điểm tìm nạp đến thư viện như trong ví dụ.
Trình tìm nạp phải gọi một URL trên máy chủ của bạn để truy xuất mã thông báo. URL này –
SERVER_TOKEN_URL– tuỳ thuộc vào cách triển khai phần phụ trợ của bạn. URL ví dụ sau đây dành cho phần phụ trợ của ứng dụng mẫu trên GitHub:https://SERVER_URL/token/delivery_consumer/TRACKING_ID
Ví dụ – Tạo trình tìm nạp mã thông báo xác thực
Các ví dụ sau đây minh hoạ cách tạo trình tìm nạp mã thông báo uỷ quyền:
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,
};
}