জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি সেট আপ করুন

জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি ব্যবহার করার আগে, নিশ্চিত করুন যে আপনি ফ্লিট ইঞ্জিন সম্পর্কে পরিচিত এবং এটি সেট আপ করে নিয়েছেন। বিস্তারিত জানতে, ফ্লিট ইঞ্জিন দেখুন।

এই ডকুমেন্টটিতে দেখানো হয়েছে কীভাবে ওয়েব পেজ অ্যাপ এবং ফ্লিট ইঞ্জিনের মধ্যে অথরাইজেশন চালু করতে হয়। একবার সঠিক অথরাইজেশন টোকেন দিয়ে ফ্লিট ইঞ্জিনে আপনার রিকোয়েস্টগুলো সেট আপ করা হয়ে গেলে, আপনি ম্যাপে একটি গাড়ি ট্র্যাক করার জন্য প্রস্তুত হয়ে যাবেন।

অনুমোদন সেট আপ করুন

স্মার্টফোন এবং ব্রাউজারের মতো কম নির্ভরযোগ্য পরিবেশ থেকে এপিআই মেথড কল করার জন্য ফ্লিট ইঞ্জিনে জেএসওএন ওয়েব টোকেন (জেডব্লিউটি) ব্যবহার করা আবশ্যক।

একটি JWT আপনার সার্ভারে তৈরি হয়, স্বাক্ষরিত ও এনক্রিপ্ট করা হয় এবং এর মেয়াদ শেষ না হওয়া পর্যন্ত বা এটি অকার্যকর না হওয়া পর্যন্ত পরবর্তী সার্ভার ইন্টারঅ্যাকশনের জন্য ক্লায়েন্টের কাছে পাঠানো হয়।

মূল বিবরণ

অনুমোদন কীভাবে কাজ করে?

ফ্লিট ইঞ্জিন ডেটার মাধ্যমে অনুমোদনে সার্ভার-সাইড এবং ক্লায়েন্ট-সাইড উভয় বাস্তবায়ন জড়িত।

সার্ভার-সাইড অনুমোদন

আপনার ফ্লিট ট্র্যাকিং অ্যাপ্লিকেশনে অথেনটিকেশন এবং অথরাইজেশন সেট আপ করার আগে, ফ্লিট ইঞ্জিন অ্যাক্সেসের জন্য আপনার ব্যাকএন্ড সার্ভারকে অবশ্যই আপনার ফ্লিট ট্র্যাকিং অ্যাপ্লিকেশনের কাছে JSON ওয়েব টোকেন (JWT) ইস্যু করতে সক্ষম হতে হবে। আপনার ফ্লিট ট্র্যাকিং অ্যাপ্লিকেশন তার অনুরোধগুলির সাথে এই JWT গুলি পাঠায়, যাতে ফ্লিট ইঞ্জিন অনুরোধগুলিকে প্রমাণীকৃত এবং অনুরোধের ডেটা অ্যাক্সেস করার জন্য অনুমোদিত হিসাবে স্বীকৃতি দেয়। সার্ভার-সাইড JWT বাস্তবায়নের নির্দেশাবলীর জন্য, ফ্লিট ইঞ্জিন এসেনশিয়ালস -এর অধীনে "ইস্যু JSON ওয়েব টোকেন" দেখুন।

ফ্লিট ট্র্যাকিং বাস্তবায়নের সময় আপনার সার্ভার থেকে টোকেন তৈরি করতে, নিম্নলিখিতগুলি দেখুন:

ক্লায়েন্ট-সাইড অনুমোদন

যখন আপনি জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি ব্যবহার করেন, তখন এটি একটি অথরাইজেশন টোকেন ফেচারের মাধ্যমে সার্ভার থেকে একটি টোকেনের জন্য অনুরোধ করে। নিম্নলিখিতগুলির মধ্যে যেকোনো একটি সত্য হলে এটি এই কাজটি করে থাকে:

  • কোনো বৈধ টোকেন নেই, যেমন যখন SDK একটি নতুন পেজ লোডের সময় ফেচারকে কল করেনি, অথবা যখন ফেচার কোনো টোকেন ফেরত দেয়নি।

  • টোকেনটির মেয়াদ শেষ হয়ে গেছে।

  • টোকেনটির মেয়াদ এক মিনিটের মধ্যে শেষ হয়ে যাবে।

অন্যথায়, জাভাস্ক্রিপ্ট ফ্লিট ট্র্যাকিং লাইব্রেরি পূর্বে ইস্যু করা বৈধ টোকেনটি ব্যবহার করে এবং ফেচারকে কল করে না।

একটি অনুমোদন টোকেন ফেচার তৈরি করুন

এই নির্দেশিকাগুলো ব্যবহার করে আপনার অনুমোদন টোকেন ফেচার তৈরি করুন:

  • ফেচারকে অবশ্যই দুটি ফিল্ডসহ একটি ডেটা স্ট্রাকচার রিটার্ন করতে হবে , যা নিম্নরূপভাবে একটি Promise মধ্যে আবদ্ধ থাকবে:

    • একটি স্ট্রিং token

    • একটি সংখ্যার expiresInSeconds )। টোকেনটি ফেচ করার পর এই পরিমাণ সময়ের মধ্যে এর মেয়াদ শেষ হয়ে যায়। উদাহরণে দেখানো অনুযায়ী, অথেনটিকেশন টোকেন ফেচারকে অবশ্যই ফেচ করার সময় থেকে লাইব্রেরিতে মেয়াদ শেষ হওয়ার সময়টি সেকেন্ডে পাঠাতে হবে।

  • টোকেন পুনরুদ্ধার করার জন্য ফেচারটি আপনার সার্ভারের একটি URL কল করবে । এই URL-টি—অর্থাৎ SERVER_TOKEN_URL আপনার ব্যাকএন্ড বাস্তবায়নের উপর নির্ভর করে। নিচের উদাহরণ URL-টি গিটহাবে থাকা স্যাম্পল অ্যাপ ব্যাকএন্ডের জন্য:

    • 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,
  };
}

এরপর কী?