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