ตั้งค่า JavaScript Consumer SDK

ด้วย JavaScript Consumer SDK แอปผู้บริโภคของคุณจะแสดงตำแหน่งของ ยานพาหนะและสถานที่อื่นๆ ที่สนใจซึ่งติดตามใน Fleet Engine บนเว็บ แผนที่ ซึ่งจะช่วยให้ผู้ใช้ที่เป็นผู้บริโภคเห็นความคืบหน้าในการจัดส่งได้ คู่มือนี้จะถือว่าคุณได้ตั้งค่า Fleet Engine กับเครื่องมือดังกล่าว โปรเจ็กต์ Google Cloud และคีย์ API ดูรายละเอียดได้ที่ Fleet Engine

คุณได้ตั้งค่า JavaScript Consumer SDK โดยทำตามขั้นตอนต่อไปนี้

  1. เปิดใช้ Maps JavaScript API
  2. ตั้งค่าการให้สิทธิ์

เปิดใช้ Maps JavaScript API

เปิดใช้ Maps JavaScript API ในโปรเจ็กต์ Google Cloud Console ที่คุณใช้ สำหรับอินสแตนซ์ Fleet Engine โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อเปิดใช้ API ใน เอกสาร Maps JavaScript API

ตั้งค่าการให้สิทธิ์

Fleet Engine กำหนดให้ใช้ JSON Web Token (JWT) ที่ลงนามโดย บัญชีบริการที่เหมาะสมสำหรับการเรียกเมธอด API จาก low-Trust สภาพแวดล้อมการทำงาน สภาพแวดล้อมที่มีความน่าเชื่อถือต่ำรวมถึงสมาร์ทโฟนและเบราว์เซอร์ต่างๆ JWT จะทำงานในเซิร์ฟเวอร์ของคุณ ซึ่งเป็นสภาพแวดล้อมที่เชื่อถือได้อย่างสมบูรณ์ JWT ลงชื่อ เข้ารหัส และส่งต่อไปยังไคลเอ็นต์สำหรับเซิร์ฟเวอร์ต่อๆ ไป การโต้ตอบต่างๆ จนกว่าหมดอายุหรือใช้ไม่ได้

แบ็กเอนด์ของคุณควรตรวจสอบสิทธิ์และให้สิทธิ์กับ Fleet Engine โดยใช้ กลไก Application Default Credentials แบบมาตรฐาน สร้าง อย่าลืมใช้ JWT ที่ลงชื่อโดยบัญชีบริการที่เหมาะสม สำหรับ รายการของบทบาทบัญชีบริการ โปรดดูบทบาทบัญชีบริการ Fleet Engine ในข้อมูลพื้นฐานเกี่ยวกับ Fleet Engine

แอปสำหรับผู้ใช้ทั่วไปควรตรวจสอบสิทธิ์ผู้ใช้ปลายทางด้วย บทบาท delivery_consumer จากโปรเจ็กต์ Google Cloud ที่จะแสดงผลเท่านั้น ข้อมูลเฉพาะผู้บริโภค วิธีนี้จะทำให้ Fleet Engine กรองและปกปิดข้อมูลทั้งหมด ข้อมูลอื่นๆ ในคำตอบ ตัวอย่างเช่น ระหว่างงานที่ไม่พร้อมใช้งาน จะไม่มีการแชร์ข้อมูลตำแหน่งกับผู้ใช้ปลายทาง โปรดดูบัญชีบริการ บทบาทสำหรับงานที่กำหนดเวลาไว้

การให้สิทธิ์ทำงานอย่างไร

การให้สิทธิ์ด้วยข้อมูล Fleet Engine เกี่ยวข้องกับทั้งฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์ การใช้งานของคุณ

การให้สิทธิ์ฝั่งเซิร์ฟเวอร์

ก่อนตั้งค่าการให้สิทธิ์ในแอปพลิเคชันบนเว็บ แบ็กเอนด์ของคุณ เซิร์ฟเวอร์ต้องสามารถแสดงโทเค็นเว็บ JSON ได้ ในกรณีนี้ Fleet Engine ทราบว่าคำขอที่มาจากแอปพลิเคชันของคุณได้รับสิทธิ์ให้เข้าถึง ข้อมูลในคำขอ โปรดดูวิธีการใช้งาน JWT ฝั่งเซิร์ฟเวอร์ได้ที่ ออกโทเค็นเว็บ JSON ในส่วน Fleet Engine Essentials

โดยเฉพาะอย่างยิ่ง โปรดคำนึงถึงสิ่งต่อไปนี้สำหรับ JavaScript Consumer SDK สำหรับการติดตามการจัดส่ง:

การให้สิทธิ์ฝั่งไคลเอ็นต์

เมื่อคุณใช้ JavaScript Consumer SDK โปรแกรมจะขอโทเค็นจากเซิร์ฟเวอร์โดยใช้ ตัวเรียกโทเค็นการให้สิทธิ์ โดยจะดำเนินการเช่นนี้เมื่อข้อใดข้อหนึ่งต่อไปนี้เป็นจริง

  • ไม่มีโทเค็นที่ถูกต้อง เช่น เมื่อ SDK ไม่ได้เรียกใช้ตัวดึงข้อมูลใน การโหลดหน้าเว็บใหม่หรือเมื่อตัวดึงข้อมูลไม่ได้แสดงผลพร้อมโทเค็น

  • โทเค็นหมดอายุแล้ว

  • โทเค็นจะหมดอายุภายใน 1 นาที

มิฉะนั้น JavaScript Consumer SDK จะใช้โทเค็นที่ออกก่อนหน้านี้และถูกต้อง และ ไม่เรียกใช้ตัวดึงข้อมูล

สร้างตัวดึงข้อมูลโทเค็นการให้สิทธิ์

สร้างตัวดึงข้อมูลโทเค็นการให้สิทธิ์โดยใช้หลักเกณฑ์ต่อไปนี้

  • ตัวดึงข้อมูลต้องแสดงผลโครงสร้างข้อมูลที่มี 2 ช่อง ซึ่งรวมเอาไว้ใน Promise ดังนี้

    • สตริง token

    • หมายเลข expiresInSeconds โทเค็นจะหมดอายุภายในช่วงเวลานี้ หลังจากดึงข้อมูล ตัวดึงข้อมูลโทเค็นการตรวจสอบสิทธิ์ต้องผ่านวันหมดอายุ เวลาเป็นวินาที นับจากเวลาดึงข้อมูลไปยังไลบรารีตามที่แสดงใน เป็นตัวอย่าง

  • ตัวดึงข้อมูลควรเรียก URL บนเซิร์ฟเวอร์ของคุณเพื่อเรียกโทเค็น ช่วงเวลานี้ URL SERVER_TOKEN_URL ขึ้นอยู่กับการติดตั้งใช้งานแบ็กเอนด์ URL ตัวอย่างต่อไปนี้มีไว้สำหรับแบ็กเอนด์แอปตัวอย่างบน GitHub

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

ตัวอย่าง - สร้างตัวดึงข้อมูลโทเค็นการตรวจสอบสิทธิ์

ตัวอย่างต่อไปนี้แสดงวิธีสร้างตัวดึงข้อมูลโทเค็นการให้สิทธิ์

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

ขั้นตอนถัดไป