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

اختيار النظام الأساسي: Android iOS JavaScript

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

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

  1. تفعيل Maps JavaScript API
  2. إعداد التفويض

تفعيل Maps JavaScript API

فعِّل واجهة برمجة التطبيقات Maps JavaScript API في Google Cloud Console. لمزيد من التفاصيل، يُرجى الاطّلاع على تفعيل واجهات برمجة التطبيقات في مستندات Google Cloud. يؤدي ذلك إلى تفعيل "حزمة تطوير البرامج (SDK) للمستهلكين" لـ JavaScript.

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

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

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

في المقابل، يجب أن تتم المصادقة والتفويض في الخلفية باستخدام بيانات الاعتماد التلقائية للتطبيق العادية وآليات Fleet Engine.

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

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

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

قبل إعداد المصادقة والتفويض في تطبيقك المستند إلى الويب، يجب أن يكون خادم الخلفية قادرًا على إصدار رموز الويب المميّزة بتنسيق JSON إلى تطبيقك المستند إلى الويب للوصول إلى Fleet Engine. يُرسِل تطبيقك المستنِد إلى الويب ملفّات JWT هذه مع طلباته حتى يتعرّف 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/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