জাভাস্ক্রিপ্ট কনজিউমার SDK সেট আপ করুন

জাভাস্ক্রিপ্ট কনজিউমার এসডিকে (JavaScript Consumer SDK) ব্যবহার করে, আপনার কনজিউমার অ্যাপ ফ্লিট ইঞ্জিনে (Fleet Engine) ট্র্যাক করা যানবাহন এবং অন্যান্য গুরুত্বপূর্ণ স্থানের অবস্থান একটি ওয়েব-ভিত্তিক মানচিত্রে দেখাতে পারে। এর ফলে আপনার কনজিউমার ব্যবহারকারীরা তাদের চালানের অগ্রগতি দেখতে পারেন। এই নির্দেশিকাটি ধরে নেয় যে আপনি ফ্লিট ইঞ্জিনকে এর সংশ্লিষ্ট গুগল ক্লাউড প্রজেক্ট এবং এপিআই কী (API keys) সহ সেট আপ করেছেন। বিস্তারিত জানতে ফ্লিট ইঞ্জিন দেখুন।

এই ধাপগুলো অনুসরণ করে আপনি জাভাস্ক্রিপ্ট কনজিউমার এসডিকে সেট আপ করবেন:

  1. Maps JavaScript API সক্রিয় করুন
  2. অনুমোদন সেট আপ করুন

Maps JavaScript API সক্রিয় করুন

আপনার ফ্লিট ইঞ্জিন ইনস্ট্যান্সের জন্য ব্যবহৃত গুগল ক্লাউড কনসোল প্রজেক্টে ম্যাপস জাভাস্ক্রিপ্ট এপিআই সক্রিয় করুন। আরও বিস্তারিত জানতে, ম্যাপস জাভাস্ক্রিপ্ট এপিআই ডকুমেন্টেশনের ‘এপিআই সক্রিয় করুন’ অংশটি দেখুন।

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

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

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

মূল বিবরণ

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

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

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

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

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

বিশেষ করে, চালান ট্র্যাক করার জন্য জাভাস্ক্রিপ্ট কনজিউমার এসডিকে-এর ক্ষেত্রে নিম্নলিখিত বিষয়গুলো মনে রাখবেন:

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

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

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

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

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

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

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

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

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

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

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

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

    • https://SERVER_URL/token/delivery_consumer/TRACKING_ID

উদাহরণ - একটি প্রমাণীকরণ টোকেন ফেচার তৈরি করুন

নিম্নলিখিত উদাহরণগুলি দেখায় কিভাবে একটি অথরাইজেশন টোকেন ফেচার তৈরি করতে হয়:

জাভাস্ক্রিপ্ট

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

এরপর কী?