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

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

شما جاوا اسکریپت 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 Tokens (JWT) نیاز دارد که توسط یک حساب سرویس مناسب برای فراخوانی‌های روش API از محیط‌های کم‌اعتماد امضا شده است. محیط های کم اعتماد شامل گوشی های هوشمند و مرورگرها هستند. یک JWT در سرور شما ایجاد می شود که یک محیط کاملاً قابل اعتماد است. JWT امضا می شود، رمزگذاری می شود و برای تعاملات بعدی سرور به مشتری ارسال می شود تا زمانی که منقضی شود یا دیگر معتبر نباشد.

باطن شما باید با استفاده از مکانیزم های استاندارد Application Default Credentials احراز هویت و مجوز در برابر Fleet Engine را صادر کند. مطمئن شوید که از JWT هایی استفاده می کنید که توسط یک حساب سرویس مناسب امضا شده اند. برای فهرستی از نقش‌های حساب سرویس، نقش‌های حساب خدمات Fleet Engine را در Fleet Engine Basics ببینید.

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

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

مجوز با داده‌های Fleet Engine شامل اجرای سمت سرور و مشتری می‌شود.

مجوز سمت سرور

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

به طور خاص، موارد زیر را برای JavaScript Consumer SDK برای ردیابی محموله ها در نظر داشته باشید:

مجوز سمت مشتری

هنگامی که از JavaScript Consumer SDK استفاده می کنید، با استفاده از یک واکشی نشانه مجوز از سرور یک رمز درخواست می کند. زمانی این کار را انجام می دهد که یکی از موارد زیر درست باشد:

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

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

  • توکن در عرض یک دقیقه پس از انقضا است.

در غیر این صورت، JavaScript Consumer SDK از توکن معتبر و صادر شده قبلی استفاده می کند و واکشی را فراخوانی نمی کند.

یک واکشی نشانه مجوز ایجاد کنید

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

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

    • یک token رشته

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

  • واکشی باید یک URL در سرور شما برای بازیابی یک نشانه فراخوانی کند . این URL - SERVER_TOKEN_URL - به پیاده سازی backend شما بستگی دارد. URL مثال زیر مربوط به نمونه پشتیبان برنامه در 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
  };
}

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

بعدش چی