باستخدام حزمة تطوير البرامج (SDK) الخاصة بمستهلك JavaScript، يمكن لتطبيق المستهلك عرض مواقع المركبات والمواقع الأخرى ذات الأهمية التي يتم تتبُّعها في Fleet Engine على خريطة مستندة إلى الويب. يتيح ذلك للمستخدمين الاطلاع على مدى تقدم شحناتهم. يفترض هذا الدليل أنّك قد أعددت Fleet Engine باستخدام مفتاحَي واجهة برمجة التطبيقات ومشروع Google Cloud المرتبطَين به. راجِع Fleet Engine للاطّلاع على التفاصيل.
يمكنك إعداد حزمة تطوير البرامج (SDK) لإصدار JavaScript المخصّص للمستهلكين باتّباع الخطوات التالية:
تفعيل Maps JavaScript API
فعِّل واجهة برمجة التطبيقات Maps JavaScript API في مشروع Google Cloud Console الذي تستخدمه لمثيل Fleet Engine. لمزيد من التفاصيل، اطّلع على تفعيل واجهات برمجة التطبيقات في مستندات واجهة برمجة تطبيقات JavaScript للخرائط.
إعداد التفويض
بالنسبة إلى طلبات بيانات واجهة برمجة التطبيقات من البيئات ذات مستوى الثقة المنخفض، تتطلّب أداة Fleet Engine استخدام رموز JSON المميّزة للويب (JWT) التي تم توقيعها من خلال حساب خدمة مناسب. وتشمل البيئات منخفضة الثقة الهواتف الذكية والمتصفحات. ينشأ JWT من خادمك، وهو بيئة موثوقة بالكامل. يتم توقيع JWT وتشفيره وتمريره إلى العميل لإجراء تفاعلات لاحقة مع الخادم حتى تنتهي صلاحيته أو لا يصبح صالحًا.
يجب أن تتم مصادقة الخلفية وتفويضها ضد Fleet Engine باستخدام آليات بيانات الاعتماد التلقائية للتطبيق العادية. احرص على استخدام ملفات JWT التي تم توقيعها من خلال حساب خدمة مناسب. للحصول على قائمة بأدوار حساب الخدمة، يُرجى الاطّلاع على أدوار حساب خدمة Fleet Engine في Fleet Engine Basics.
يجب أن يُثبِّت تطبيقك المخصّص للمستهلكين هوية المستخدمين النهائيين باستخدام دورdelivery_consumer
من مشروعك على Google Cloud لعرض
المعلومات المتعلّقة بالمستهلكين فقط. بهذه الطريقة، لفلترة كل
المعلومات الأخرى في الردود ومحوها على سبيل المثال، أثناء مهمة عدم التوفّر،
لا تتم مشاركة أي معلومات عن الموقع الجغرافي مع المستخدم النهائي. اطّلِع على دوار حساب الخدمة
للمهام المجدوَلة.
في المقابل، يجب أن تتم المصادقة والتفويض في الخلفية باستخدام بيانات الاعتماد التلقائية للتطبيق العادية وآليات Fleet Engine.
كيف يعمل التفويض؟
يتضمن الترخيص باستخدام بيانات Fleet Engine تنفيذًا من جانب الخادم ومن جانب العميل.
التفويض من جهة الخادم
قبل إعداد المصادقة والتفويض في تطبيقك المستند إلى الويب، يجب أن يكون خادم الخلفية قادرًا على إصدار رموز الويب المميّزة بتنسيق JSON إلى تطبيقك المستند إلى الويب للوصول إلى Fleet Engine. يرسل تطبيقك المستند إلى الويب ملفات JWT هذه مع طلباته حتى يتعرف Fleet Engine على الطلبات كتمت مصادقتها ومصرّح بها بالوصول إلى البيانات الواردة في الطلب. للحصول على تعليمات حول تنفيذ JWT من جهة الخادم، اطّلِع على إصدار رموّز الويب المميّزة JSON ضمن أساسيات Fleet Engine.
على وجه التحديد، ضع في اعتبارك ما يلي بالنسبة إلى حزمة تطوير البرامج (SDK) للمستهلكين في JavaScript لتتبُّع الشحنات:- الإرشادات العامة لإصدار الرموز المميّزة للويب JSON
- إرشادات JWT للمهام المُجدوَلة
- مثال على رمز مميّز لتطبيق للمستهلك
التفويض من جهة العميل
عند استخدام حزمة تطوير البرامج (SDK) الخاصة بمستخدمي JavaScript، تطلب رمزًا مميّزًا من الخادم باستخدام أداة جلب الرموز المميّزة للتفويض. ويتم ذلك عند استيفاء أيٍّ ممّا يلي:
ولا يتوفّر رمز مميّز صالح، مثلاً في حال لم يستدعي حزمة تطوير البرامج (SDK) برنامج الجلب عند تحميل صفحة جديدة أو لا يعرض برنامج الجلب مع رمز مميّز.
انتهت صلاحية الرمز المميّز.
ستنتهي صلاحية الرمز المميّز خلال دقيقة واحدة.
بخلاف ذلك، تستخدم حزمة JavaScript Consumer SDK الرمز المميّز الصالح الذي تم إصداره سابقًا ولا تستدعي أداة الجلب.
إنشاء برنامج لاسترجاع الرمز المميّز للتفويض
يمكنك إنشاء أداة استرجاع الرمز المميّز للتفويض باتّباع الإرشادات التالية:
يجب أن يعرض أداة الجلب بنية بيانات تتضمّن حقلَين، يتم تضمينهما في علامة
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,
};
}