Thiết lập SDK JavaScript cho người dùng

Chọn nền tảng: Android iOS JavaScript

Với SDK JavaScript Consumer, ứng dụng tiêu dùng của bạn có thể hiển thị vị trí của các phương tiện 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 web. Điều này cho phép người tiêu dùng của bạn xem tiến trình hành trình của tài xế. Hướng dẫn này giả định rằng bạn đã thiết lập Fleet Engine với dự án 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 SDK JavaScript Consumer theo các bước sau:

  1. Bật Maps JavaScript API
  2. Thiết lập lệnh ủy quyền

Bật Maps JavaScript API

Bật Maps JavaScript API trong Google Cloud Console. Để biết thêm thông tin chi tiết, hãy xem bài viết Bật API trong tài liệu của Google Cloud. Thao tác này sẽ bật SDK Consumer cho JavaScript.

Thiết lập lệnh ủy 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à chuyể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 chi tiết quan trọng

Quy trình uỷ quyền hoạt động như thế nào?

Quy trình uỷ quyền bằng 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.

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 cấp 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 ra 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 Cấp 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 SDK JavaScript Consumer để chia sẻ tiến trình chuyến đi:

Uỷ quyền phía máy khách

Khi bạn sử dụng SDK JavaScript Consumer, 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 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, SDK JavaScript Consumer sẽ sử dụng mã thông báo hợp lệ đã được cấp 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 Promise như 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ư minh hoạ 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/consumer/TRIPID

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

Bước tiếp theo

Theo dõi chuyến đi trong JavaScript