قبل از استفاده از کتابخانه ردیابی ناوگان جاوا اسکریپت، مطمئن شوید که با Fleet Engine آشنا هستید و آن را راهاندازی کردهاید. برای جزئیات بیشتر، به Fleet Engine مراجعه کنید.
این سند نحوه فعال کردن مجوز بین برنامه صفحه وب و Fleet Engine را نشان میدهد. پس از تنظیم درخواستهای شما به Fleet Engine با توکنهای مجوز صحیح، آماده ردیابی وسیله نقلیه روی نقشه خواهید بود.
تنظیم مجوز
موتور ناوگان (Fleet Engine) برای فراخوانی متدهای API از محیطهای کماعتماد (مثل تلفنهای هوشمند و مرورگرها) نیاز به استفاده از توکنهای وب JSON (JWT) دارد.
یک JWT از سرور شما سرچشمه میگیرد، امضا و رمزگذاری میشود و برای تعاملات بعدی با سرور به کلاینت ارسال میشود تا زمانی که منقضی شود یا دیگر معتبر نباشد.
جزئیات کلیدی
- از اعتبارنامههای پیشفرض برنامه برای تأیید اعتبار و مجوزدهی در برابر Fleet Engine استفاده کنید.
- از یک حساب کاربری سرویس مناسب برای امضای JWTها استفاده کنید. به نقشهای حساب کاربری سرویس Fleet Engine در اصول اولیه Fleet Engine مراجعه کنید.
مجوز چگونه کار میکند؟
احراز هویت با دادههای Fleet Engine شامل پیادهسازی سمت سرور و سمت کلاینت میشود.
مجوز سمت سرور
قبل از اینکه احراز هویت و مجوز را در برنامه ردیابی ناوگان خود تنظیم کنید، سرور backend شما باید بتواند JSON Web Tokens را برای دسترسی به Fleet Engine به برنامه ردیابی ناوگان شما صادر کند. برنامه ردیابی ناوگان شما این JWTها را به همراه درخواستهای خود ارسال میکند تا Fleet Engine درخواستها را به عنوان احراز هویت شده و مجاز برای دسترسی به دادههای موجود در درخواست تشخیص دهد. برای دستورالعملهای مربوط به پیادهسازی JWT در سمت سرور، به Issue JSON Web Tokens در بخش Fleet Engine Essentials مراجعه کنید.
برای تولید توکنها از سرور خود هنگام پیادهسازی ردیابی ناوگان، به موارد زیر مراجعه کنید:- دستورالعملهای کلی برای صدور توکنهای وب JSON، شامل بخشهایی برای سفرهای درخواستی و وظایف برنامهریزیشده
- سفرهای درخواستی: توکن نمونه برای عملیات سرور backend
- وظایف زمانبندیشده: توکن نمونه برای ردیابی تمام وظایف و وسایل نقلیه در ناوگان
مجوز سمت کلاینت
وقتی از کتابخانه ردیابی ناوگان جاوا اسکریپت استفاده میکنید، این کتابخانه با استفاده از یک دریافتکننده توکن مجوز، یک توکن از سرور درخواست میکند. این درخواست زمانی انجام میشود که هر یک از موارد زیر صحیح باشد:
هیچ توکن معتبری وجود ندارد، مانند زمانی که SDK در بارگذاری صفحه جدید، فِتچر را فراخوانی نکرده باشد، یا زمانی که فِتچر با هیچ توکنی برنگشته باشد.
توکن منقضی شده است.
توکن تا یک دقیقه دیگر منقضی میشود.
در غیر این صورت، کتابخانه ردیابی ناوگان جاوا اسکریپت از توکن معتبر قبلاً صادر شده استفاده میکند و fetcher را فراخوانی نمیکند.
یک دریافتکنندهی توکن مجوز ایجاد کنید
با استفاده از این دستورالعملها، ابزار دریافت توکن مجوز خود را ایجاد کنید:
واکشیکننده باید یک ساختار داده با دو فیلد را برگرداند که در یک
Promiseبه صورت زیر پیچیده شده است:یک
tokenرشتهای.عددی به نام
expiresInSeconds. یک توکن پس از واکشی در این مدت زمان منقضی میشود. واکشیکنندهی توکن احراز هویت باید زمان انقضا را بر حسب ثانیه، از زمان واکشی به کتابخانه، همانطور که در مثال نشان داده شده است، ارسال کند.
واکشیکننده باید یک URL را روی سرور شما فراخوانی کند تا یک توکن را بازیابی کند. این URL -
SERVER_TOKEN_URL- به پیادهسازی backend شما بستگی دارد. مثال URL زیر برای backend برنامه نمونه در GitHub است:-
https://SERVER_URL/token/fleet_reader
-
مثال - ایجاد یک واکشیکننده توکن مجوز
مثالهای زیر نحوه ایجاد یک واکشیکننده توکن مجوز را نشان میدهند:
جاوا اسکریپت
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
};
}
تایپ اسکریپت
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,
};
}