OAuth এবং Google সাইন-ইন ধারণা নির্দেশিকা (ডায়ালগফ্লো)

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

নিচের যেকোনো একটি প্রযোজ্য হলে OAuth এবং Google সাইন-ইন হল প্রস্তাবিত অ্যাকাউন্ট লিঙ্কিং সমাধান:

  • আপনার একটি অ্যাকশন রয়েছে যা একাধিক প্ল্যাটফর্মে বিস্তৃত রয়েছে (উদাহরণস্বরূপ, যদি আপনার অ্যাকশন একটি Android অ্যাপের সাথে কাজ করে)।
  • আপনার কাছে একটি বিদ্যমান প্রমাণীকরণ সিস্টেম রয়েছে এবং আপনি ব্যবহারকারীদের তাদের পরিচয়গুলি অ-Google অ্যাকাউন্টগুলির সাথে লিঙ্ক করার অনুমতি দিতে চান৷ উদাহরণস্বরূপ, আপনি যদি একটি লয়্যালটি প্রোগ্রাম অফার করেন এবং নিশ্চিত করতে চান যে ব্যবহারকারী তাদের বিদ্যমান অ্যাকাউন্টে জমা হওয়া পয়েন্টগুলি হারাবেন না।

OAuth এবং Google সাইন-ইন আপনার জন্য সঠিক সমাধান কিনা তা যাচাই করতে, আপনার অ্যাকাউন্ট লিঙ্ক করার ধরন বেছে নিন পৃষ্ঠাটি দেখুন।

মূল শর্তাবলী

OAuth এবং Google সাইন-ইন কীভাবে কাজ করে সে সম্পর্কে পড়ার আগে, নিম্নলিখিত শর্তগুলির সাথে নিজেকে পরিচিত করুন:

  • Google ID টোকেন: ব্যবহারকারীর পরিচয়ের একটি স্বাক্ষরিত দাবী যাতে ব্যবহারকারীর মৌলিক Google প্রোফাইল তথ্য (তাদের নাম, ইমেল ঠিকানা এবং প্রোফাইল ছবি) থাকে। একটি Google আইডি টোকেন হল একটি JSON ওয়েব টোকেন (JWT)। নিম্নলিখিত একটি ডিকোডেড টোকেনের একটি উদাহরণ:
{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • অ্যাকাউন্ট সাইন-ইন সহায়ক অভিপ্রায়: একটি সহায়ক অভিপ্রায় যা আপনি সহায়ক থেকে একটি অ্যাকাউন্ট লিঙ্কিং প্রবাহের অনুরোধ করতে কল করেন। আরও তথ্যের জন্য, অ্যাকাউন্ট সাইন-ইন দেখুন।
    • প্রসঙ্গ স্ট্রিং: একটি কাস্টমাইজড স্ট্রিং যা আপনি অ্যাকাউন্ট সাইন-ইন সহায়ক অভিপ্রায়ে যোগ করেন যা ব্যবহারকারীকে বলে যে আপনি কেন তাদের অ্যাকাউন্ট লিঙ্ক করতে চান৷
  • অনুমোদন কোড প্রবাহ: একটি OAuth 2.0 ফ্লো যা আপনি OAuth + Google সাইন-ইন এর সাথে প্রয়োগ করতে পারেন। এই প্রবাহের দুটি শেষ বিন্দু প্রয়োজন:
    • অনুমোদনের এন্ডপয়েন্ট: এন্ডপয়েন্ট যা আপনার ব্যবহারকারীদের কাছে সাইন-ইন UI উপস্থাপন করে যারা ইতিমধ্যে সাইন ইন করেনি। এটি একটি স্বল্পকালীন অনুমোদন কোড আকারে অনুরোধ করা অ্যাক্সেসের সম্মতি রেকর্ড করে।
    • টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট: এই এন্ডপয়েন্ট দুই ধরনের এক্সচেঞ্জের জন্য দায়ী:
      1. একটি দীর্ঘস্থায়ী রিফ্রেশ টোকেন এবং একটি স্বল্পকালীন অ্যাক্সেস টোকেনের জন্য একটি অনুমোদন কোড বিনিময় করে৷ এই বিনিময়টি ঘটে যখন ব্যবহারকারী অ্যাকাউন্ট লিঙ্কিং প্রবাহের মধ্য দিয়ে যায়।
      2. একটি স্বল্পকালীন অ্যাক্সেস টোকেনের জন্য দীর্ঘস্থায়ী রিফ্রেশ টোকেন বিনিময় করে। এই বিনিময়টি ঘটে যখন Google এর একটি নতুন অ্যাক্সেস টোকেনের প্রয়োজন হয় কারণ এটির মেয়াদ শেষ হয়ে গেছে৷
  • অন্তর্নিহিত কোড প্রবাহ: একটি OAuth 2.0 ফ্লো যা আপনি OAuth + Google সাইন-ইন এর সাথে প্রয়োগ করতে পারেন। এই প্রবাহের জন্য শুধুমাত্র একটি অনুমোদনের শেষ বিন্দু প্রয়োজন। এই প্রবাহের সময়, Google ব্যবহারকারীর ব্রাউজারে আপনার অনুমোদনের শেষ পয়েন্ট খোলে। সাইন-ইন সফল হলে, আপনি Google-এ একটি দীর্ঘস্থায়ী অ্যাক্সেস টোকেন ফেরত দেবেন। এই অ্যাক্সেস টোকেনটি এখন অ্যাসিস্ট্যান্ট থেকে আপনার অ্যাকশনে পাঠানো প্রতিটি অনুরোধে অন্তর্ভুক্ত করা হয়েছে।
  • অ্যাক্সেস টোকেন: একটি টোকেন যা ব্যবহারকারীর ডেটার অংশগুলি অ্যাক্সেস করার জন্য আপনার পরিষেবাকে অনুমোদন করে। অ্যাক্সেস টোকেন প্রতিটি স্বতন্ত্র ব্যবহারকারীর সাথে যুক্ত।
  • রিফ্রেশ টোকেন: একটি টোকেন যা একটি নতুন অ্যাক্সেস টোকেনের জন্য বিনিময় করা হয় একবার একটি স্বল্পকালীন অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে।

পূর্বশর্ত

OAuth এবং Google সাইন-ইন লিঙ্কিং টাইপ ব্যবহার করতে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • একটি OAuth 2 সার্ভার
  • একটি টোকেন বিনিময় শেষ পয়েন্ট

    একটি আইডি টোকেন থেকে স্বয়ংক্রিয় লিঙ্কিং এবং অ্যাকাউন্ট তৈরির জন্য Google এর প্রোটোকলের জন্য সমর্থন যোগ করার জন্য টোকেন এক্সচেঞ্জ এন্ডপয়েন্টকে অবশ্যই প্রসারিত করতে হবে (যেমন, এই এন্ডপয়েন্টে অনুরোধে intent=get এবং intent=create প্যারামিটার যোগ করুন)।

কিভাবে এটা কাজ করে

এই বিভাগটি OAuth এবং Google সাইন-ইন-এর জন্য সাধারণ প্রবাহ বর্ণনা করে। নিম্নলিখিত বিভাগ, OAuth এবং GSI ফ্লো , বিভিন্ন প্রবাহের বর্ণনা দেয় যা একটি এর উপর ভিত্তি করে ঘটতে পারে

মৌলিক প্রবাহ নিম্নরূপ:

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

OAuth এবং GSI প্রবাহ

এই বিভাগটি OAuth এবং GSI এর সাথে ঘটতে পারে এমন বিভিন্ন প্রবাহের উপর দিয়ে যায়। এই ডায়াগ্রামগুলি অন্তর্নিহিত কোড প্রবাহের পরিবর্তে অনুমোদন কোড প্রবাহের সাথে ঘটতে থাকা প্রবাহগুলিকে অতিক্রম করে এবং ধরে নেয় যে আপনি আপনার অ্যাকশনের জন্য প্রাকৃতিক ভাষা বোঝার সমাধান হিসাবে Dialogflow ব্যবহার করছেন৷

ব্যবহারকারী আপনার অ্যাকশন আহ্বান করার পরে প্রতিটি প্রবাহে এই সাধারণ পদক্ষেপগুলি থাকে:

উপরের প্রবাহে, আপনি আপনার কাস্টমাইজ করা একটি প্রসঙ্গ স্ট্রিং সহ actions.intent.SIGN_IN সহায়ক অভিপ্রায়কে কল করুন৷ এই অভিপ্রায় ব্যবহারকারীর কাছে তাদের Google প্রোফাইল তথ্য অ্যাক্সেস করার অনুমতি চায়৷ ব্যবহারকারীর সম্মতির পরে, সহকারী একটি অনুরোধ পাঠায় যাতে user@gmail.com এর প্রোফাইল তথ্য থাকে।

আপনি ভয়েসের সাথে অ্যাকাউন্ট লিঙ্কিং কনফিগার করেন কিনা এবং ব্যবহারকারীর তথ্য আপনার সিস্টেমে ইতিমধ্যেই বিদ্যমান কিনা তার উপর ভিত্তি করে এই পয়েন্টের পরে প্রবাহগুলি পৃথক হয়। এই প্রবাহের প্রতিটি নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।

ভয়েস অ্যাকাউন্ট তৈরির সাথে প্রবাহ সক্ষম

এই বিভাগে অ্যাকাউন্ট লিঙ্কিং প্রবাহের বিবরণ রয়েছে যা ঘটতে পারে যদি আপনি ভয়েসের মাধ্যমে অ্যাকাউন্ট তৈরি করতে সক্ষম করেন।

ফ্লো 1: ব্যবহারকারীর তথ্য আপনার সিস্টেমে বিদ্যমান

এই ক্ষেত্রে, user@gmail.com দ্বারা প্রতিনিধিত্ব করা ব্যবহারকারী আপনার ব্যাকএন্ডে বিদ্যমান, তাই আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট ব্যবহারকারীর জন্য একটি টোকেন প্রদান করে। আপনার অ্যাকশনে ব্যবহারকারীর পরিচয় এখন তাদের Google অ্যাকাউন্টের সাথে লিঙ্ক করা হয়েছে। ব্যবহারকারীর আসল অনুরোধ ( "আমার স্বাভাবিক অর্ডার করুন" ) কাস্টম উদ্দেশ্য order_drink. আপনার ওয়েবহুক তারপরে মিলিত অভিপ্রায়ের পরিপূর্ণতা পরিচালনা করে এবং user@gmail.com এর স্বাভাবিক অর্ডারের জন্য আপনার ডাটাবেস জিজ্ঞাসা করে। ব্যবহারকারী তারপর সহকারীর সাথে তাদের কথোপকথন চালিয়ে যেতে পারেন।

ফ্লো 2: ব্যবহারকারীর তথ্য বিদ্যমান নেই এবং ব্যবহারকারী অ্যাকাউন্ট তৈরি করে

যেহেতু আপনি voice এর মাধ্যমে অ্যাকাউন্ট তৈরি করতে সক্ষম করেছেন এবং user@gmail.com আপনার ব্যাকএন্ডে বিদ্যমান নেই, তাই সহকারী ব্যবহারকারীকে জিজ্ঞাসা করে যে তারা নিম্নলিখিতগুলির মধ্যে একটি করতে চায় কিনা:

ক) তাদের Google প্রোফাইল তথ্য ব্যবহার করে আপনার সিস্টেমে একটি নতুন অ্যাকাউন্ট তৈরি করুন, যা ভয়েসের মাধ্যমে সম্পন্ন হয়

খ) একটি ভিন্ন অ্যাকাউন্ট দিয়ে আপনার সিস্টেমে সাইন ইন করুন

এই ক্ষেত্রে, ব্যবহারকারী ভয়েসের মাধ্যমে একটি নতুন অ্যাকাউন্ট তৈরি করতে বেছে নেয়। Google একটি অ্যাকাউন্ট তৈরি করার অনুরোধ সহ আপনার পরিষেবার টোকেন এক্সচেঞ্জ এন্ডপয়েন্টকে কল করে৷ এই অনুরোধটিতে Google আইডি টোকেন রয়েছে, যার মধ্যে একটি নতুন অ্যাকাউন্ট তৈরি করার জন্য প্রয়োজনীয় উপাদানগুলি অন্তর্ভুক্ত রয়েছে৷ তারপরে আপনি ব্যবহারকারীর জন্য একটি অ্যাকাউন্ট তৈরি করতে এই টোকেন (ব্যবহারকারীর নাম এবং ইমেল ঠিকানা) থেকে তথ্য ব্যবহার করতে পারেন।

অ্যাকাউন্ট তৈরি হওয়ার পরে, আপনার পরিষেবা একটি অ্যাক্সেস টোকেন ফেরত দেয় এবং নতুন তৈরি অ্যাকাউন্টের জন্য টোকেন রিফ্রেশ করে। আপনার অ্যাকশনে ব্যবহারকারীর পরিচয় এখন তাদের Google অ্যাকাউন্টের সাথে লিঙ্ক করা হয়েছে। ব্যবহারকারীর আসল অনুরোধ ( "আমার স্বাভাবিক অর্ডার করুন" ) কাস্টম উদ্দেশ্য order_drink. আপনার ওয়েবহুক তারপরে মিলিত অভিপ্রায়ের পরিপূর্ণতা পরিচালনা করে এবং user@gmail.com এর সাধারণ অর্ডারের জন্য আপনার ডাটাবেসকে জিজ্ঞাসা করে, যা ব্যবহারকারী নতুন হওয়ার কারণে এখনও বিদ্যমান নেই। আপনার অ্যাকশন ব্যবহারকারীকে জিজ্ঞাসা করতে পারে যে তারা কী অর্ডার করতে চায়৷

ফ্লো 3: ব্যবহারকারীর তথ্য বিদ্যমান নেই এবং ব্যবহারকারী ভিন্ন অ্যাকাউন্ট দিয়ে সাইন ইন করে

আপনি ভয়েসের মাধ্যমে অ্যাকাউন্ট তৈরি করতে সক্ষম করেছেন, তাই সহকারী ব্যবহারকারীকে জিজ্ঞাসা করে যে তারা নিম্নলিখিতগুলির মধ্যে একটি করতে চায় কিনা:

ক) তাদের Google প্রোফাইল তথ্য ব্যবহার করে আপনার সিস্টেমে একটি নতুন অ্যাকাউন্ট তৈরি করুন, যা ভয়েসের মাধ্যমে সম্পন্ন হয়

খ) একটি ভিন্ন অ্যাকাউন্ট দিয়ে আপনার সিস্টেমে সাইন ইন করুন

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

ব্যবহারকারীর শংসাপত্র যাচাই করার পরে, আপনার পরিষেবা Google-এ একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন ফেরত দেয়৷ আপনার অ্যাকশনে ব্যবহারকারীর পরিচয় এখন একটি নন-Google অ্যাকাউন্টের সাথে লিঙ্ক করা হয়েছে। ব্যবহারকারীর আসল অনুরোধ ( "আমার স্বাভাবিক অর্ডার করুন" ) কাস্টম উদ্দেশ্য order_drink. আপনার ওয়েবহুক তারপরে মিলিত অভিপ্রায়ের পরিপূর্ণতা পরিচালনা করে এবং user@gmail.com এর সাধারণ অর্ডারের জন্য আপনার ডাটাবেসকে জিজ্ঞাসা করে, যা ব্যবহারকারী নতুন হওয়ার কারণে এখনও বিদ্যমান নেই। আপনার অ্যাকশন ব্যবহারকারীকে জিজ্ঞাসা করতে পারে যে তারা কী অর্ডার করতে চায় বা তাদের স্বাভাবিক অর্ডার সেট আপ করতে বলতে পারে।

ভয়েস অ্যাকাউন্ট তৈরির সাথে ফ্লো অক্ষম

এই বিভাগে অ্যাকাউন্ট লিঙ্কিং প্রবাহের বিবরণ রয়েছে যা ঘটতে পারে যদি আপনি ভয়েসের মাধ্যমে অ্যাকাউন্ট তৈরি অক্ষম করেন।

ফ্লো 4: ব্যবহারকারীর তথ্য বিদ্যমান নেই

আপনি ভয়েসের মাধ্যমে অ্যাকাউন্ট তৈরি সক্ষম করেননি এবং ব্যবহারকারী আপনার ব্যাকএন্ডে বিদ্যমান নেই, তাই আদর্শ OAuth প্রবাহ শুরু হয়। অ্যাসিস্ট্যান্ট ব্যবহারকারীর ব্রাউজারে আপনার অনুমোদনের এন্ডপয়েন্ট খোলে (যদি প্রবাহটি শুধুমাত্র ভয়েস-অনলি ডিভাইসে শুরু হয়, তাহলে Google এক্সিকিউশনটি স্ক্রীন সহ একটি ডিভাইসে স্থানান্তর করে)। ব্যবহারকারী বেছে নিতে পারেন a) একটি ভিন্ন প্রদানকারীর সাথে সাইন ইন করুন, যদি তারা একটি ভিন্ন অ্যাকাউন্টের সাথে আপনার পরিষেবাতে নিবন্ধন করে থাকে বা b) একটি ভিন্ন প্রদানকারীর সাথে একটি নতুন অ্যাকাউন্ট তৈরি করে৷ OAuth প্রবাহ সম্পর্কে আরও তথ্যের জন্য, OAuth ধারণা নির্দেশিকা দেখুন।

ব্যবহারকারীর শংসাপত্র যাচাই করার পরে, আপনার পরিষেবা Google-এ একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন ফেরত দেয়৷ আপনার অ্যাকশনে ব্যবহারকারীর পরিচয় এখন একটি নন-Google অ্যাকাউন্টের সাথে লিঙ্ক করা হয়েছে। ব্যবহারকারীর আসল অনুরোধ ( "আমার স্বাভাবিক অর্ডার করুন" ) কাস্টম উদ্দেশ্য order_drink. আপনার ওয়েবহুক তারপরে মিলিত অভিপ্রায়ের পরিপূর্ণতা পরিচালনা করে এবং user@gmail.com এর সাধারণ অর্ডারের জন্য আপনার ডাটাবেসকে জিজ্ঞাসা করে, যা ব্যবহারকারী নতুন হওয়ার কারণে এখনও বিদ্যমান নেই। আপনার অ্যাকশন ব্যবহারকারীকে তাদের স্বাভাবিক অর্ডার সেট আপ করতে বলতে পারে।