একটি OAuth 2.0 সার্ভার প্রয়োগ করুন

প্রতিটি smart home অ্যাকশন ব্যবহারকারীদের প্রমাণীকরণের জন্য একটি প্রক্রিয়া অন্তর্ভুক্ত করতে হবে।

প্রমাণীকরণ আপনাকে আপনার প্রমাণীকরণ সিস্টেমে ব্যবহারকারীর অ্যাকাউন্টগুলির সাথে আপনার ব্যবহারকারীদের Google অ্যাকাউন্টগুলিকে লিঙ্ক করতে দেয়৷ এটি আপনাকে আপনার ব্যবহারকারীদের শনাক্ত করতে দেয় যখন আপনার পূর্ণতা একটি স্মার্ট হোম অভিপ্রায় পায়। Google স্মার্ট হোম শুধুমাত্র একটি অনুমোদন কোড ফ্লো সহ OAuth সমর্থন করে।

এই পৃষ্ঠাটি বর্ণনা করে যে কীভাবে আপনার OAuth 2.0 সার্ভার সেট আপ করবেন যাতে এটি আপনার smart home অ্যাকশনের সাথে কাজ করে।

OAuth এর সাথে Google অ্যাকাউন্ট লিঙ্ক করা

অনুমোদন কোড প্রবাহে, আপনার দুটি শেষ পয়েন্ট প্রয়োজন:

  • অনুমোদন এন্ডপয়েন্ট, যা আপনার ব্যবহারকারীদের সাইন-ইন UI উপস্থাপন করে যারা ইতিমধ্যে সাইন ইন করেনি। অনুমোদনের শেষ পয়েন্টটি অনুরোধ করা অ্যাক্সেসে ব্যবহারকারীদের সম্মতি রেকর্ড করার জন্য একটি স্বল্প-কালীন অনুমোদন কোডও তৈরি করে।

  • টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট, যা দুই ধরনের এক্সচেঞ্জের জন্য দায়ী:

    1. একটি দীর্ঘস্থায়ী রিফ্রেশ টোকেন এবং একটি স্বল্পকালীন অ্যাক্সেস টোকেনের জন্য একটি অনুমোদন কোড বিনিময় করে৷ এই বিনিময়টি ঘটে যখন ব্যবহারকারী অ্যাকাউন্ট লিঙ্কিং প্রবাহের মধ্য দিয়ে যায়।
    2. একটি স্বল্পকালীন অ্যাক্সেস টোকেনের জন্য দীর্ঘস্থায়ী রিফ্রেশ টোকেন বিনিময় করে। এই বিনিময়টি ঘটে যখন Google এর একটি নতুন অ্যাক্সেস টোকেনের প্রয়োজন হয় কারণ এটির মেয়াদ শেষ হয়ে গেছে৷

ডিজাইন নির্দেশিকা

এই বিভাগে আপনি OAuth লিঙ্কিং ফ্লোগুলির জন্য হোস্ট করা ব্যবহারকারী স্ক্রিনের জন্য ডিজাইনের প্রয়োজনীয়তা এবং সুপারিশগুলি বর্ণনা করে৷ এটি Google-এর অ্যাপ দ্বারা কল করার পরে, আপনার প্ল্যাটফর্মটি Google পৃষ্ঠায় একটি সাইন ইন এবং ব্যবহারকারীকে অ্যাকাউন্ট লিঙ্ক করার সম্মতি স্ক্রীন প্রদর্শন করে। অ্যাকাউন্ট লিঙ্ক করার সম্মতি দেওয়ার পরে ব্যবহারকারীকে Google-এর অ্যাপে ফেরত পাঠানো হয়।

এই চিত্রটি ব্যবহারকারীর জন্য তাদের Google অ্যাকাউন্টকে আপনার প্রমাণীকরণ সিস্টেমের সাথে লিঙ্ক করার পদক্ষেপগুলি দেখায়৷ প্রথম স্ক্রিনশটটি আপনার প্ল্যাটফর্ম থেকে ব্যবহারকারীর সূচনা লিঙ্ক দেখায়। দ্বিতীয় চিত্রটি ব্যবহারকারীর Google-এ সাইন-ইন দেখায়, যখন তৃতীয়টি ব্যবহারকারীর সম্মতি এবং আপনার অ্যাপের সাথে তাদের Google অ্যাকাউন্ট লিঙ্ক করার জন্য নিশ্চিতকরণ দেখায়। চূড়ান্ত স্ক্রিনশট Google অ্যাপে একটি সফলভাবে লিঙ্ক করা ব্যবহারকারীর অ্যাকাউন্ট দেখায়।
চিত্র 1. অ্যাকাউন্ট লিঙ্ককারী ব্যবহারকারী গুগলে সাইন ইন করুন এবং সম্মতি স্ক্রীন।

প্রয়োজনীয়তা

  1. আপনাকে অবশ্যই যোগাযোগ করতে হবে যে ব্যবহারকারীর অ্যাকাউন্টটি Google-এর সাথে লিঙ্ক করা হবে, Google Home বা Google Assistant-এর মতো নির্দিষ্ট Google পণ্যের সাথে নয়
  2. আপনার অবশ্যই একটি Google অনুমোদন বিবৃতি থাকতে হবে যেমন "সাইন ইন করার মাধ্যমে, আপনি আপনার ডিভাইসগুলিকে নিয়ন্ত্রণ করার জন্য Googleকে অনুমোদন করছেন।" Google হোম ডেভেলপার নীতির Google ডিভাইস নিয়ন্ত্রণ অনুমোদন বিভাগটি দেখুন।
  3. ব্যবহারকারীরা লিঙ্ক না করতে চাইলে আপনাকে অবশ্যই ফিরে যেতে বা বাতিল করার জন্য একটি উপায় প্রদান করতে হবে।
  4. আপনাকে অবশ্যই ওয়েব OAuth লিঙ্কিং পৃষ্ঠা খুলতে হবে এবং নিশ্চিত করতে হবে যে ব্যবহারকারীদের তাদের Google অ্যাকাউন্টে সাইন ইন করার জন্য একটি পরিষ্কার পদ্ধতি আছে, যেমন তাদের ব্যবহারকারীর নাম এবং পাসওয়ার্ডের জন্য ক্ষেত্র। Google সাইন-ইন (GSI) পদ্ধতি ব্যবহার করবেন না যা ব্যবহারকারীদের ওয়েব OAuth লিঙ্কিং পৃষ্ঠায় না নিয়েই লিঙ্ক করতে সক্ষম করে৷ এটি Google নীতির লঙ্ঘন।

সুপারিশ

আমরা আপনাকে নিম্নলিখিতগুলি করার পরামর্শ দিই:

  1. Google এর গোপনীয়তা নীতি প্রদর্শন করুন। সম্মতি স্ক্রিনে Google-এর গোপনীয়তা নীতির একটি লিঙ্ক অন্তর্ভুক্ত করুন।

  2. ডেটা শেয়ার করতে হবে। ব্যবহারকারীকে তাদের Google-এর কোন ডেটা প্রয়োজন এবং কেন তা জানাতে স্পষ্ট এবং সংক্ষিপ্ত ভাষা ব্যবহার করুন।

  3. কল-টু-অ্যাকশন পরিষ্কার করুন। আপনার সম্মতি স্ক্রিনে একটি স্পষ্ট কল-টু-অ্যাকশন বলুন, যেমন "সম্মতি এবং লিঙ্ক"। এর কারণ হল ব্যবহারকারীদের বুঝতে হবে তাদের অ্যাকাউন্ট লিঙ্ক করার জন্য Google-এর সাথে কী ডেটা শেয়ার করতে হবে।

  4. লিঙ্কমুক্ত করার ক্ষমতা। ব্যবহারকারীদের আনলিঙ্ক করার জন্য একটি পদ্ধতি অফার করুন, যেমন আপনার প্ল্যাটফর্মে তাদের অ্যাকাউন্ট সেটিংসের URL। বিকল্পভাবে, আপনি Google অ্যাকাউন্টে একটি লিঙ্ক অন্তর্ভুক্ত করতে পারেন যেখানে ব্যবহারকারীরা তাদের লিঙ্ক করা অ্যাকাউন্ট পরিচালনা করতে পারে।

  5. ব্যবহারকারীর অ্যাকাউন্ট পরিবর্তন করার ক্ষমতা। ব্যবহারকারীদের তাদের অ্যাকাউন্ট(গুলি) পরিবর্তন করার জন্য একটি পদ্ধতির পরামর্শ দিন। এটি বিশেষত উপকারী যদি ব্যবহারকারীদের একাধিক অ্যাকাউন্ট থাকে।

    • যদি কোনো ব্যবহারকারীকে অ্যাকাউন্ট পাল্টানোর জন্য সম্মতি স্ক্রীন বন্ধ করতে হয়, তাহলে Google-এ একটি পুনরুদ্ধারযোগ্য ত্রুটি পাঠান যাতে ব্যবহারকারী OAuth লিঙ্কের মাধ্যমে পছন্দসই অ্যাকাউন্টে সাইন ইন করতে পারেন।
  6. আপনার লোগো অন্তর্ভুক্ত করুন. সম্মতি স্ক্রিনে আপনার কোম্পানির লোগো প্রদর্শন করুন। আপনার লোগো স্থাপন করতে আপনার শৈলী নির্দেশিকা ব্যবহার করুন. আপনি যদি Google এর লোগোও প্রদর্শন করতে চান তবে লোগো এবং ট্রেডমার্ক দেখুন।

অনুমোদন কোড প্রবাহ

অনুমোদন কোড প্রবাহের একটি OAuth 2.0 সার্ভার বাস্তবায়নে দুটি শেষ পয়েন্ট থাকে, যা আপনার পরিষেবা HTTPS দ্বারা উপলব্ধ করে। প্রথম এন্ডপয়েন্ট হল অনুমোদনের এন্ডপয়েন্ট, যা ডেটা অ্যাক্সেসের জন্য ব্যবহারকারীদের কাছ থেকে সম্মতি খোঁজার বা পাওয়ার জন্য দায়ী। অনুমোদনের শেষ পয়েন্ট আপনার ব্যবহারকারীদের কাছে একটি সাইন-ইন UI উপস্থাপন করে যেগুলি ইতিমধ্যে সাইন ইন করেনি এবং অনুরোধ করা অ্যাক্সেসের সম্মতি রেকর্ড করে৷ দ্বিতীয় এন্ডপয়েন্ট হল টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট, যা এনক্রিপ্ট করা স্ট্রিং পেতে ব্যবহৃত হয়, যাকে টোকেন বলা হয়, যা একজন ব্যবহারকারীকে আপনার পরিষেবা অ্যাক্সেস করার অনুমতি দেয়।

যখন একটি Google অ্যাপ্লিকেশনকে আপনার পরিষেবার APIগুলির মধ্যে একটিতে কল করার প্রয়োজন হয়, তখন Google তাদের পক্ষে এই APIগুলিকে কল করার জন্য আপনার ব্যবহারকারীদের কাছ থেকে অনুমতি পেতে এই শেষ পয়েন্টগুলি একসাথে ব্যবহার করে৷

Google দ্বারা শুরু করা একটি OAuth 2.0 অনুমোদন কোড ফ্লো সেশনের নিম্নলিখিত প্রবাহ রয়েছে:

  1. Google ব্যবহারকারীর ব্রাউজারে আপনার অনুমোদনের শেষ পয়েন্ট খোলে। যদি কোনো অ্যাকশনের জন্য শুধুমাত্র ভয়েস ডিভাইসে প্রবাহ শুরু হয়, তাহলে Google এক্সিকিউশনটিকে একটি ফোনে স্থানান্তর করে।
  2. ব্যবহারকারী সাইন ইন করে, যদি ইতিমধ্যে সাইন ইন না করে থাকে, এবং যদি তারা ইতিমধ্যে অনুমতি না দেয় তবে আপনার API দিয়ে তাদের ডেটা অ্যাক্সেস করার জন্য Google-কে অনুমতি দেয়৷
  3. আপনার পরিষেবা একটি অনুমোদন কোড তৈরি করে এবং এটি Google-এ ফেরত দেয়। এটি করতে, অনুরোধের সাথে সংযুক্ত অনুমোদন কোড সহ ব্যবহারকারীর ব্রাউজারটিকে Google-এ ফেরত পাঠান৷
  4. Google আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্টে অনুমোদন কোড পাঠায়, যা কোডের সত্যতা যাচাই করে এবং একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন ফেরত দেয়। অ্যাক্সেস টোকেন হল একটি স্বল্পস্থায়ী টোকেন যা আপনার পরিষেবা API অ্যাক্সেস করার জন্য শংসাপত্র হিসাবে গ্রহণ করে। রিফ্রেশ টোকেন হল একটি দীর্ঘস্থায়ী টোকেন যা Google সংরক্ষণ করতে পারে এবং মেয়াদ শেষ হয়ে গেলে নতুন অ্যাক্সেস টোকেনগুলি অর্জন করতে ব্যবহার করতে পারে৷
  5. ব্যবহারকারী অ্যাকাউন্ট লিঙ্কিং ফ্লো সম্পূর্ণ করার পরে, Google থেকে পাঠানো প্রতিটি পরবর্তী অনুরোধে একটি অ্যাক্সেস টোকেন থাকে।

অনুমোদনের অনুরোধগুলি পরিচালনা করুন

যখন আপনাকে OAuth 2.0 অনুমোদন কোড ফ্লো ব্যবহার করে অ্যাকাউন্ট লিঙ্ক করার প্রয়োজন হয়, তখন Google নিম্নলিখিত প্যারামিটারগুলি অন্তর্ভুক্ত করে এমন একটি অনুরোধ সহ ব্যবহারকারীকে আপনার অনুমোদনের শেষ পয়েন্টে পাঠায়:

অনুমোদনের শেষ পয়েন্ট পরামিতি
client_id আপনি Google-এ যে ক্লায়েন্ট আইডি অ্যাসাইন করেছেন।
redirect_uri যে URLটিতে আপনি এই অনুরোধের প্রতিক্রিয়া পাঠান।
state পুনঃনির্দেশ URI-তে অপরিবর্তিত Google-এ ফেরত পাঠানো হয়।
scope ঐচ্ছিক: স্কোপ স্ট্রিংগুলির একটি স্পেস-ডিলিমিটেড সেট যা Google যে ডেটার জন্য অনুমোদনের অনুরোধ করছে তা নির্দিষ্ট করে৷
response_type প্রতিক্রিয়াতে যে মানের প্রত্যাবর্তন করতে হবে। OAuth 2.0 অনুমোদন কোড প্রবাহের জন্য, প্রতিক্রিয়ার ধরনটি সর্বদাই code
user_locale RFC5646 ফর্ম্যাটে Google অ্যাকাউন্টের ভাষা সেটিং, ব্যবহারকারীর পছন্দের ভাষায় আপনার বিষয়বস্তু স্থানীয়করণ করতে ব্যবহৃত হয়।

উদাহরণস্বরূপ, যদি আপনার অনুমোদনের শেষ পয়েন্ট https://myservice.example.com/auth এ উপলব্ধ থাকে, তাহলে একটি অনুরোধ নিম্নলিখিতটির মতো দেখতে পারে:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&scope=REQUESTED_SCOPES&response_type=code&user_locale=LOCALE

সাইন-ইন অনুরোধগুলি পরিচালনা করার জন্য আপনার অনুমোদনের শেষ পয়েন্টের জন্য, নিম্নলিখিত পদক্ষেপগুলি করুন:

  1. যাচাই করুন যে ক্লায়েন্ট_আইডি আপনার Google-এ নির্ধারিত ক্লায়েন্ট client_id সাথে মেলে এবং আপনার পরিষেবার জন্য Google দ্বারা প্রদত্ত পুনঃনির্দেশ URL এর সাথে redirect_uri মেলে। অনিচ্ছাকৃত বা ভুল কনফিগার করা ক্লায়েন্ট অ্যাপগুলিতে অ্যাক্সেস মঞ্জুর করা রোধ করতে এই চেকগুলি গুরুত্বপূর্ণ৷ আপনি যদি একাধিক OAuth 2.0 ফ্লো সমর্থন করেন, তাও নিশ্চিত করুন যে response_type code
  2. ব্যবহারকারী আপনার পরিষেবাতে সাইন ইন করেছেন কিনা তা পরীক্ষা করুন৷ ব্যবহারকারী সাইন ইন না করলে, আপনার পরিষেবার সাইন-ইন বা সাইন-আপ প্রবাহ সম্পূর্ণ করুন৷
  3. আপনার API অ্যাক্সেস করার জন্য Google ব্যবহার করার জন্য একটি অনুমোদন কোড তৈরি করুন। অনুমোদন কোড যেকোন স্ট্রিং মান হতে পারে, তবে এটি অবশ্যই ব্যবহারকারীকে অনন্যভাবে উপস্থাপন করতে হবে, টোকেনটি যে ক্লায়েন্টের জন্য এবং কোডের মেয়াদ শেষ হওয়ার সময়, এবং এটি অনুমানযোগ্য হতে হবে না। আপনি সাধারণত অনুমোদন কোড ইস্যু করেন যা প্রায় 10 মিনিটের পরে মেয়াদ শেষ হয়ে যায়।
  4. নিশ্চিত করুন যে redirect_uri প্যারামিটার দ্বারা নির্দিষ্ট করা URL-এর নিম্নলিখিত ফর্ম রয়েছে:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  5. redirect_uri প্যারামিটার দ্বারা নির্দিষ্ট URL-এ ব্যবহারকারীর ব্রাউজারকে পুনঃনির্দেশ করুন। code এবং state প্যারামিটার যোগ করে রিডাইরেক্ট করার সময় আপনি এইমাত্র তৈরি করা অনুমোদন কোড এবং আসল, অপরিবর্তিত রাষ্ট্রীয় মান অন্তর্ভুক্ত করুন। নিম্নলিখিত URL এর একটি উদাহরণ:
    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?code=AUTHORIZATION_CODE&state=STATE_STRING

টোকেন বিনিময় অনুরোধ হ্যান্ডেল

আপনার পরিষেবার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট দুটি ধরণের টোকেন এক্সচেঞ্জের জন্য দায়ী:

  • অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেনগুলির জন্য অনুমোদনের কোডগুলি বিনিময় করুন৷
  • অ্যাক্সেস টোকেনগুলির জন্য রিফ্রেশ টোকেনগুলি বিনিময় করুন৷

টোকেন বিনিময় অনুরোধ নিম্নলিখিত পরামিতি অন্তর্ভুক্ত:

টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট প্যারামিটার
client_id একটি স্ট্রিং যা অনুরোধের উত্সটিকে Google হিসাবে চিহ্নিত করে৷ এই স্ট্রিংটি অবশ্যই আপনার সিস্টেমের মধ্যে Google এর অনন্য শনাক্তকারী হিসাবে নিবন্ধিত হতে হবে৷
client_secret একটি গোপন স্ট্রিং যা আপনি আপনার পরিষেবার জন্য Google এর সাথে নিবন্ধন করেছেন৷
grant_type টোকেনের ধরন বিনিময় হচ্ছে। এটি হয় authorization_code বা refresh_token
code যখন grant_type=authorization_code , এই প্যারামিটারটি হল Google আপনার সাইন-ইন বা টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট থেকে প্রাপ্ত কোড।
redirect_uri grant_type=authorization_code হলে, এই প্যারামিটারটি প্রাথমিক অনুমোদনের অনুরোধে ব্যবহৃত URL।
refresh_token যখন grant_type=refresh_token , এই প্যারামিটারটি হল রিফ্রেশ টোকেন Google আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট থেকে প্রাপ্ত।

অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেনগুলির জন্য অনুমোদনের কোডগুলি বিনিময় করুন৷

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

এই অনুরোধগুলির জন্য, grant_type এর মান হল authorization_code , এবং code মান হল অনুমোদন কোডের মান যা আপনি আগে Google-কে দিয়েছিলেন৷ একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেনের জন্য একটি অনুমোদন কোড বিনিময় করার অনুরোধের একটি উদাহরণ নিম্নলিখিত:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI

একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেনের জন্য অনুমোদনের কোডগুলি বিনিময় করতে, আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে POST অনুরোধে সাড়া দেয়:

  1. যাচাই করুন যে ক্লায়েন্ট_আইডি অনুরোধের client_id একটি অনুমোদিত উত্স হিসাবে চিহ্নিত করে এবং client_secret প্রত্যাশিত মানের সাথে মেলে৷
  2. যাচাই করুন যে অনুমোদন কোডটি বৈধ এবং মেয়াদ শেষ হয়নি এবং অনুরোধে উল্লেখিত ক্লায়েন্ট আইডি অনুমোদন কোডের সাথে যুক্ত ক্লায়েন্ট আইডির সাথে মেলে।
  3. নিশ্চিত করুন যে redirect_uri প্যারামিটার দ্বারা নির্দিষ্ট করা URL প্রাথমিক অনুমোদনের অনুরোধে ব্যবহৃত মানের সাথে অভিন্ন।
  4. আপনি যদি উপরের সমস্ত মানদণ্ড যাচাই করতে না পারেন, তাহলে একটি HTTP 400 খারাপ অনুরোধের ত্রুটি {"error": "invalid_grant"} দিয়ে বডি হিসাবে ফেরত দিন।
  5. অন্যথায়, একটি রিফ্রেশ টোকেন এবং একটি অ্যাক্সেস টোকেন তৈরি করতে অনুমোদন কোড থেকে ব্যবহারকারী আইডি ব্যবহার করুন৷ এই টোকেনগুলি যে কোনও স্ট্রিং মান হতে পারে, তবে সেগুলি অবশ্যই ব্যবহারকারী এবং ক্লায়েন্টকে অনন্যভাবে উপস্থাপন করতে হবে যার জন্য টোকেনটি রয়েছে এবং সেগুলি অনুমানযোগ্য হতে হবে না। অ্যাক্সেস টোকেনগুলির জন্য, টোকেনের মেয়াদ শেষ হওয়ার সময়ও রেকর্ড করুন, যা সাধারণত আপনি টোকেন ইস্যু করার এক ঘন্টা পরে। রিফ্রেশ টোকেন মেয়াদ শেষ হয় না.
  6. HTTPS প্রতিক্রিয়ার মূল অংশে নিম্নলিখিত JSON অবজেক্টটি ফেরত দিন:
    {
    "token_type": "Bearer",
    "access_token": "ACCESS_TOKEN",
    "refresh_token": "REFRESH_TOKEN",
    "expires_in": SECONDS_TO_EXPIRATION
    }
    

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

অ্যাক্সেস টোকেনগুলির জন্য রিফ্রেশ টোকেনগুলি বিনিময় করুন৷

যখন একটি অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে যায়, তখন Google একটি নতুন অ্যাক্সেস টোকেনের জন্য একটি রিফ্রেশ টোকেন বিনিময় করার জন্য আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্টে একটি অনুরোধ পাঠায়।

এই অনুরোধগুলির জন্য, refresh_token grant_type refresh_token হল রিফ্রেশ টোকেনের মান যা আপনি আগে Google-কে দিয়েছিলেন৷ নিম্নলিখিতটি একটি অ্যাক্সেস টোকেনের জন্য একটি রিফ্রেশ টোকেন বিনিময় করার অনুরোধের একটি উদাহরণ:

POST /token HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

একটি অ্যাক্সেস টোকেনের জন্য একটি রিফ্রেশ টোকেন বিনিময় করতে, আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে POST অনুরোধে সাড়া দেয়:

  1. যাচাই করুন যে ক্লায়েন্ট_আইডি অনুরোধের client_id Google হিসাবে চিহ্নিত করে এবং client_secret প্রত্যাশিত মানের সাথে মেলে।
  2. রিফ্রেশ টোকেন বৈধ কিনা যাচাই করুন এবং অনুরোধে উল্লেখিত ক্লায়েন্ট আইডি রিফ্রেশ টোকেনের সাথে যুক্ত ক্লায়েন্ট আইডির সাথে মেলে।
  3. আপনি যদি উপরের সমস্ত মানদণ্ড যাচাই করতে না পারেন, তাহলে একটি HTTP 400 খারাপ অনুরোধের ত্রুটি {"error": "invalid_grant"} দিয়ে বডি হিসাবে ফেরত দিন।
  4. অন্যথায়, একটি অ্যাক্সেস টোকেন তৈরি করতে রিফ্রেশ টোকেন থেকে ব্যবহারকারী আইডি ব্যবহার করুন। এই টোকেনগুলি যে কোনও স্ট্রিং মান হতে পারে, তবে সেগুলি অবশ্যই ব্যবহারকারী এবং ক্লায়েন্টকে অনন্যভাবে উপস্থাপন করতে হবে যার জন্য টোকেনটি রয়েছে এবং সেগুলি অনুমানযোগ্য হতে হবে না। অ্যাক্সেস টোকেনগুলির জন্য, টোকেনের মেয়াদ শেষ হওয়ার সময়ও রেকর্ড করুন, সাধারণত আপনি টোকেন ইস্যু করার এক ঘন্টা পরে।
  5. HTTPS প্রতিক্রিয়ার মূল অংশে নিম্নলিখিত JSON অবজেক্টটি ফেরত দিন:
    {
    "token_type": "Bearer",
    "access_token": " ACCESS_TOKEN ",
    "expires_in": SECONDS_TO_EXPIRATION
    }

ব্যবহারকারীর তথ্যের অনুরোধগুলি পরিচালনা করুন

ইউজারইনফো এন্ডপয়েন্ট হল একটি OAuth 2.0 সুরক্ষিত রিসোর্স যা লিঙ্ক করা ব্যবহারকারীর বিষয়ে দাবি ফেরত দেয়। ইউজার ইনফো এন্ডপয়েন্ট বাস্তবায়ন এবং হোস্ট করা ঐচ্ছিক, নিম্নলিখিত ব্যবহারের ক্ষেত্রে ছাড়া:

আপনার টোকেন এন্ডপয়েন্ট থেকে অ্যাক্সেস টোকেন সফলভাবে পুনরুদ্ধার করার পরে, Google লিঙ্ক করা ব্যবহারকারীর সম্পর্কে প্রাথমিক প্রোফাইল তথ্য পুনরুদ্ধার করার জন্য আপনার ব্যবহারকারীর তথ্য এন্ডপয়েন্টে একটি অনুরোধ পাঠায়।

userinfo এন্ডপয়েন্ট রিকোয়েস্ট হেডার
Authorization header টাইপ বিয়ারারের অ্যাক্সেস টোকেন।

উদাহরণস্বরূপ, যদি আপনার ব্যবহারকারীর তথ্যের এন্ডপয়েন্ট https://myservice.example.com/userinfo এ উপলব্ধ থাকে, তাহলে একটি অনুরোধ নিম্নলিখিতটির মতো দেখতে পারে:

GET /userinfo HTTP/1.1
Host: myservice.example.com
Authorization: Bearer ACCESS_TOKEN

অনুরোধগুলি পরিচালনা করার জন্য আপনার ব্যবহারকারীর তথ্যের শেষ পয়েন্টের জন্য, নিম্নলিখিত পদক্ষেপগুলি করুন:

  1. অনুমোদন শিরোনাম থেকে অ্যাক্সেস টোকেন বের করুন এবং অ্যাক্সেস টোকেনের সাথে যুক্ত ব্যবহারকারীর জন্য তথ্য ফেরত দিন।
  2. অ্যাক্সেস টোকেনটি অবৈধ হলে, WWW-Authenticate প্রতিক্রিয়া শিরোনাম ব্যবহার করে একটি HTTP 401 অননুমোদিত ত্রুটি ফেরত দিন। নীচে একটি ব্যবহারকারীর তথ্য ত্রুটি প্রতিক্রিয়ার একটি উদাহরণ রয়েছে:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    লিঙ্কিং প্রক্রিয়া চলাকালীন যদি একটি 401 অননুমোদিত, বা অন্য কোনও অসফল ত্রুটি প্রতিক্রিয়া ফেরত দেওয়া হয়, তবে ত্রুটিটি পুনরুদ্ধারযোগ্য নয়, পুনরুদ্ধার করা টোকেনটি বাতিল করা হবে এবং ব্যবহারকারীর কাছে থাকবে আবার লিঙ্কিং প্রক্রিয়া শুরু করতে।
  3. অ্যাক্সেস টোকেন বৈধ হলে, HTTPS প্রতিক্রিয়ার মূল অংশে নিম্নলিখিত JSON অবজেক্টের সাথে HTTP 200 প্রতিক্রিয়া প্রত্যাবর্তন করুন:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    
    যদি আপনার ব্যবহারকারীর তথ্য এন্ডপয়েন্ট একটি HTTP 200 সাফল্যের প্রতিক্রিয়া প্রদান করে, তবে পুনরুদ্ধার করা টোকেন এবং দাবিগুলি ব্যবহারকারীর Google এর বিরুদ্ধে নিবন্ধিত হয় অ্যাকাউন্ট

    ব্যবহারকারীর তথ্য শেষ পয়েন্ট প্রতিক্রিয়া
    sub একটি অনন্য আইডি যা আপনার সিস্টেমে ব্যবহারকারীকে শনাক্ত করে।
    email ব্যবহারকারীর ইমেল ঠিকানা।
    given_name ঐচ্ছিক: ব্যবহারকারীর প্রথম নাম।
    family_name ঐচ্ছিক: ব্যবহারকারীর শেষ নাম।
    name ঐচ্ছিক: ব্যবহারকারীর পুরো নাম।
    picture ঐচ্ছিক: ব্যবহারকারীর প্রোফাইল ছবি।