JavaScript Consumer SDK را تنظیم کنید

با استفاده از SDK جاوا اسکریپت Consumer، برنامه مصرف‌کننده شما می‌تواند موقعیت مکانی وسایل نقلیه و سایر مکان‌های مورد علاقه ردیابی شده در Fleet Engine را روی یک نقشه مبتنی بر وب نشان دهد. این به کاربران مصرف‌کننده شما اجازه می‌دهد تا پیشرفت محموله‌های خود را مشاهده کنند. این راهنما فرض می‌کند که شما Fleet Engine را با پروژه Google Cloud و کلیدهای API مرتبط با آن راه‌اندازی کرده‌اید. برای جزئیات بیشتر به Fleet Engine مراجعه کنید.

شما با دنبال کردن مراحل زیر، Javascript Consumer SDK را راه‌اندازی می‌کنید:

  1. API جاوا اسکریپت نقشه‌ها را فعال کنید .
  2. مجوز را تنظیم کنید .

فعال کردن API جاوا اسکریپت نقشه‌ها

API جاوا اسکریپت Maps را در پروژه Google Cloud Console که برای نمونه Fleet Engine خود استفاده می‌کنید، فعال کنید. برای جزئیات بیشتر، به بخش فعال‌سازی APIها در مستندات Maps JavaScript API مراجعه کنید.

تنظیم مجوز

موتور ناوگان (Fleet Engine) برای فراخوانی متدهای API از محیط‌های کم‌اعتماد (مثل تلفن‌های هوشمند و مرورگرها) نیاز به استفاده از توکن‌های وب JSON (JWT) دارد.

یک JWT از سرور شما سرچشمه می‌گیرد، امضا و رمزگذاری می‌شود و برای تعاملات بعدی با سرور به کلاینت ارسال می‌شود تا زمانی که منقضی شود یا دیگر معتبر نباشد.

جزئیات کلیدی

برنامه مصرف‌کننده شما باید کاربران نهایی شما را با نقش delivery_consumer از پروژه Google Cloud شما احراز هویت کند تا فقط اطلاعات مربوط به مصرف‌کننده را برگرداند. به این ترتیب، Fleet Engine تمام اطلاعات دیگر را در پاسخ‌ها فیلتر و ویرایش می‌کند. به عنوان مثال، در طول یک کار عدم دسترسی، هیچ اطلاعات مکانی با کاربر نهایی به اشتراک گذاشته نمی‌شود. برای کارهای زمان‌بندی شده به نقش‌های حساب سرویس مراجعه کنید.

مجوز چگونه کار می‌کند؟

احراز هویت با داده‌های Fleet Engine شامل پیاده‌سازی سمت سرور و سمت کلاینت می‌شود.

مجوز سمت سرور

قبل از اینکه احراز هویت و مجوز را در برنامه تحت وب خود تنظیم کنید، سرور backend شما باید بتواند JSON Web Tokens را برای دسترسی به Fleet Engine به برنامه تحت وب شما صادر کند. برنامه تحت وب شما این JWTها را به همراه درخواست‌های خود ارسال می‌کند تا Fleet Engine درخواست‌ها را به عنوان معتبر و مجاز برای دسترسی به داده‌های موجود در درخواست تشخیص دهد. برای دستورالعمل‌های مربوط به پیاده‌سازی JWT در سمت سرور، به Issue JSON Web Tokens در بخش Fleet Engine Essentials مراجعه کنید.

به طور خاص، موارد زیر را برای SDK مصرف‌کننده جاوا اسکریپت جهت ردیابی محموله‌ها در نظر داشته باشید:

مجوز سمت کلاینت

وقتی از SDK مصرف‌کننده جاوااسکریپت استفاده می‌کنید، با استفاده از یک دریافت‌کننده توکن مجوز، یک توکن از سرور درخواست می‌کند. این درخواست زمانی انجام می‌شود که هر یک از موارد زیر برقرار باشد:

  • هیچ توکن معتبری وجود ندارد، مانند زمانی که SDK در بارگذاری صفحه جدید، فِتچر را فراخوانی نکرده باشد، یا زمانی که فِتچر با هیچ توکنی برنگشته باشد.

  • توکن منقضی شده است.

  • توکن تا یک دقیقه دیگر منقضی می‌شود.

در غیر این صورت، SDK مصرف‌کننده جاوااسکریپت از توکن معتبر و از پیش صادر شده استفاده می‌کند و fetcher را فراخوانی نمی‌کند.

یک دریافت‌کننده‌ی توکن مجوز ایجاد کنید

با استفاده از این دستورالعمل‌ها، ابزار دریافت توکن مجوز خود را ایجاد کنید:

  • واکشی‌کننده باید یک ساختار داده با دو فیلد را برگرداند که در یک Promise به صورت زیر پیچیده شده است:

    • یک token رشته‌ای.

    • عددی به نام expiresInSeconds . یک توکن پس از واکشی در این مدت زمان منقضی می‌شود. واکشی‌کننده‌ی توکن احراز هویت باید زمان انقضا را بر حسب ثانیه، از زمان واکشی به کتابخانه، همانطور که در مثال نشان داده شده است، ارسال کند.

  • واکشی‌کننده باید یک URL را روی سرور شما فراخوانی کند تا یک توکن را بازیابی کند. این URL - SERVER_TOKEN_URL - به پیاده‌سازی backend شما بستگی دارد. مثال URL زیر برای backend برنامه نمونه در GitHub است:

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

مثال - ایجاد یک واکشی‌کننده توکن احراز هویت

مثال‌های زیر نحوه ایجاد یک واکشی‌کننده توکن مجوز را نشان می‌دهند:

جاوا اسکریپت

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

تایپ اسکریپت

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

قدم بعدی چیست؟