ตั้งค่า JavaScript Consumer SDK

เลือกแพลตฟอร์ม: Android iOS JavaScript

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 ดูรายละเอียดเพิ่มเติมได้ที่ หัวข้อเปิดใช้ API ในเอกสารประกอบของ Google Cloud ซึ่งจะเป็นการเปิดใช้ Consumer SDK สำหรับ JavaScript

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

Fleet Engine กำหนดให้ใช้โทเค็นเว็บ JSON (JWT) สำหรับการเรียกใช้เมธอด API จาก สภาพแวดล้อมที่มีความน่าเชื่อถือต่ำ ได้แก่ สมาร์ทโฟนและเบราว์เซอร์

JWT จะสร้างขึ้นในเซิร์ฟเวอร์ของคุณ ลงชื่อ เข้ารหัส และส่งไปยังไคลเอ็นต์สำหรับการโต้ตอบกับเซิร์ฟเวอร์ในภายหลังจนกว่าจะหมดอายุหรือไม่สามารถใช้งานได้อีกต่อไป

รายละเอียดที่สำคัญ

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

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

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

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

โดยเฉพาะอย่างยิ่ง โปรดคำนึงถึงสิ่งต่อไปนี้สำหรับ 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/consumer/TRIPID

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

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

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

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

ติดตามการเดินทางใน JavaScript