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