إعداد "حزمة تطوير البرامج (SDK) للمستهلكين" بلغة JavaScript

باستخدام حزمة تطوير البرامج (SDK) الخاصة بمستهلك JavaScript، يمكن لتطبيق المستهلك عرض موقع المركبات والمواقع الأخرى ذات الأهمية التي يتم تتبعها في Fleet Engine على أساس الويب الخريطة. يتيح ذلك للمستخدمين الاطلاع على مدى تقدم شحناتهم. يفترض هذا الدليل أنك أعددت Fleet Engine بالجهاز المرتبط به مشروع Google Cloud ومفاتيح واجهة برمجة التطبيقات يُرجى الاطّلاع على Fleet Engine لمعرفة التفاصيل.

يمكنك إعداد "حزمة SDK الخاصة بمستخدمي JavaScript" باتّباع الخطوات التالية:

  1. تفعيل واجهة برمجة تطبيقات JavaScript للخرائط
  2. إعداد التفويض

تفعيل واجهة برمجة تطبيقات JavaScript للخرائط

تفعيل واجهة برمجة تطبيقات JavaScript للخرائط في مشروع Google Cloud Console الذي تستخدمه لمثيل Fleet Engine. لمزيد من التفاصيل، يُرجى الاطّلاع على تفعيل واجهات برمجة التطبيقات في مستندات JavaScript API للخرائط

إعداد التفويض

يتطلب Fleet Engine استخدام رموز JSON المميّزة للويب (JWT) المُوقَّعة من خلال حساب خدمة مناسب لطلبات بيانات طريقة واجهة برمجة التطبيقات من مستوى الثقة المنخفضة البيئات. وتشمل البيئات منخفضة الثقة الهواتف الذكية والمتصفحات. JWT على الخادم الخاص بك، والتي تُعد بيئة موثوقة بالكامل. رمز JWT توقيعها وتشفيرها وتمريرها إلى العميل في الخادم اللاحق إلى أن تنتهي صلاحيتها أو لا تعود صالحة.

يجب أن تتم المصادقة والتفويض ضد Fleet Engine باستخدام الواجهة الخلفية. إلى آليات بيانات الاعتماد التلقائية للتطبيق القياسية. الماركة تأكَّد من استخدام ملفات JWT التي تم توقيعها من خلال حساب خدمة مناسب. بالنسبة إلى قائمة بأدوار حساب الخدمة، يُرجى الاطّلاع على أدوار حساب خدمةFleet Engine. في أساسيات Fleet Engine

من المفترض أن يصادق تطبيق المستهلك لديك من خلال دور واحد (delivery_consumer) من مشروعك على Google Cloud يمكن عرضه فقط الخاصة بالمستهلك. بهذه الطريقة، يعمل Fleet Engine على فلترة جميع والمعلومات الأخرى في الردود. على سبيل المثال، أثناء مَهمّة عدم التوفّر، عدم مشاركة أي معلومات عن الموقع الجغرافي مع المستخدم النهائي راجِع حساب الخدمة. الأدوار للمهام المجدولة.

كيف يعمل التفويض؟

يشمل الترخيص باستخدام بيانات Fleet Engine كلاً من جانب الخادم ومن جهة العميل. التنفيذ.

التفويض من جهة الخادم

قبل إعداد التفويض في تطبيقك المستند إلى الويب، يجب تشغيل الخلفية أن يكون الخادم قادرًا على عرض رموز JSON المميّزة للويب. وبهذه الطريقة، يستخدم Fleet Engine يتعرف على الطلبات الواردة من تطبيقك على أنه مصرّح له بالوصول البيانات الواردة في الطلب. للحصول على تعليمات حول تنفيذ JWT من جهة الخادم، يمكنك الاطّلاع على اصدِر رموز الويب المميّزة JSON ضِمن Fleet Engine Essentials.

على وجه التحديد، يُرجى تذكُّر ما يلي بالنسبة إلى حزمة تطوير البرامج (SDK) الخاصة بمستخدمي JavaScript لتتبُّع الشحنات:

التفويض من جهة العميل

عند استخدام حزمة تطوير البرامج (SDK) الخاصة بمستهلك JavaScript، فإنها تطلب رمزًا مميزًا من الخادم باستخدام أداة استرجاع الرمز المميز للتفويض. ويتم ذلك في حال استيفاء أيٍّ من المتطلّبات التالية:

  • ولا يتوفّر رمز مميّز صالح، كأن لا تستدعي حزمة تطوير البرامج (SDK) أداة الجلب على تحميل صفحة جديدة أو في حال عدم عرض برنامج الجلب مع رمز مميّز.

  • انتهت صلاحية الرمز المميّز.

  • ستنتهي صلاحية الرمز المميّز خلال دقيقة واحدة.

بخلاف ذلك، تستخدم "حزمة تطوير البرامج (SDK) للمستهلكين في JavaScript" الرمز المميز الصالح الذي تم إصداره مسبقًا، عدم استدعاء برنامج الجلب.

إنشاء برنامج لاسترجاع الرمز المميّز للتفويض

يمكنك إنشاء أداة استرجاع الرمز المميّز للتفويض باتّباع الإرشادات التالية:

  • يجب أن يعرض برنامج الجلب بنية بيانات من حقلين، ملفوفين في 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,
  };
}

الخطوات التالية