OAuth-ভিত্তিক Google সাইন-ইন "স্ট্রীমলাইনড" লিঙ্ক করা

OAuth-ভিত্তিক Google সাইন-ইন "স্ট্রীমলাইনড" লিঙ্কিং টাইপ OAuth-ভিত্তিক অ্যাকাউন্ট লিঙ্কিংয়ের উপরে Google সাইন-ইন যোগ করে। এটি Google ব্যবহারকারীদের জন্য নির্বিঘ্ন ভয়েস-ভিত্তিক লিঙ্কিং প্রদান করে এবং সেইসাথে ব্যবহারকারীদের জন্য অ্যাকাউন্ট লিঙ্কিং সক্ষম করে যারা আপনার পরিষেবাতে একটি নন-Google পরিচয় সহ নিবন্ধন করেছেন।

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

চিত্র 1 : আপনার অ্যাকশন ব্যবহারকারীর Google প্রোফাইলে অ্যাক্সেস পাওয়ার পরে, আপনি আপনার প্রমাণীকরণ সিস্টেমে ব্যবহারকারীর জন্য একটি মিল খুঁজে পেতে এটি ব্যবহার করতে পারেন।

স্ট্রীমলাইনড লিঙ্কিং টাইপের সাথে অ্যাকাউন্ট লিঙ্ক করার জন্য, এই সাধারণ পদক্ষেপগুলি অনুসরণ করুন:

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

ভয়েসের মাধ্যমে অ্যাকাউন্ট তৈরিতে সহায়তা করুন

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

  • তাদের Google অ্যাকাউন্ট তথ্য ব্যবহার করে আপনার সিস্টেমে একটি নতুন অ্যাকাউন্ট তৈরি করুন, বা৷
  • যদি তাদের একটি বিদ্যমান নন-Google অ্যাকাউন্ট থাকে তবে একটি ভিন্ন অ্যাকাউন্ট দিয়ে আপনার প্রমাণীকরণ সিস্টেমে সাইন ইন করুন।

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

ভয়েসের মাধ্যমে অ্যাকাউন্ট তৈরির অনুমতি দিন

আপনি যদি ভয়েসের মাধ্যমে ব্যবহারকারীর অ্যাকাউন্ট তৈরির অনুমতি না দেন, তাহলে Assistant ব্যবহারকারীর প্রমাণীকরণের জন্য আপনার দেওয়া ওয়েব সাইটের URL খোলে। স্ক্রিন নেই এমন কোনো ডিভাইসে ইন্টারঅ্যাকশন ঘটলে, অ্যাসিস্ট্যান্ট অ্যাকাউন্ট লিঙ্কিং ফ্লো চালিয়ে যেতে ব্যবহারকারীকে একটি ফোনে নির্দেশ দেয়।

সৃষ্টির অনুমতি না দেওয়ার সুপারিশ করা হয় যদি:

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

  • আপনার অ্যাকাউন্ট তৈরির প্রবাহের সম্পূর্ণ নিয়ন্ত্রণ থাকতে হবে। উদাহরণস্বরূপ, আপনি যদি অ্যাকাউন্ট তৈরির সময় ব্যবহারকারীকে আপনার পরিষেবার শর্তাদি দেখাতে চান তবে আপনি তৈরির অনুমতি দিতে পারেন না।

অনুমতি দিন

OAuth-ভিত্তিক Google সাইন-ইন "স্ট্রীমলাইনড" লিঙ্কিং প্রয়োগ করুন৷

অ্যাকাউন্টগুলি ইন্ডাস্ট্রি স্ট্যান্ডার্ড OAuth 2.0 ফ্লোগুলির সাথে লিঙ্ক করা হয়েছে৷ অ্যাকশন অন Google অন্তর্নিহিত এবং অনুমোদন কোড প্রবাহ সমর্থন করে।

In the implicit code flow, Google opens your authorization endpoint in the user's browser. After successful sign in, you return a long-lived access token to Google. This access token is now included in every request sent from the Assistant to your Action.

In the authorization code flow, you need two endpoints:

  • The authorization endpoint, which is responsible for presenting the sign-in UI to your users that aren't already signed in and recording consent to the requested access in the form of a short-lived authorization code.
  • The token exchange endpoint, which is responsible for two types of exchanges:
    1. Exchanges an authorization code for a long-lived refresh token and a short-lived access token. This exchange happens when the user goes through the account linking flow.
    2. Exchanges a long-lived refresh token for a short-lived access token. This exchange happens when Google needs a new access token because the one it had expired.

Although the implicit code flow is simpler to implement, Google recommends that access tokens issued using the implicit flow never expire, because using token expiration with the implicit flow forces the user to link their account again. If you need token expiration for security reasons, you should strongly consider using the auth code flow instead.

প্রকল্পটি কনফিগার করুন

স্ট্রীমলাইন লিঙ্কিং ব্যবহার করার জন্য আপনার প্রোজেক্ট কনফিগার করতে, এই ধাপগুলি অনুসরণ করুন:

  1. অ্যাকশন কনসোল খুলুন এবং আপনি যে প্রকল্পটি ব্যবহার করতে চান তা নির্বাচন করুন।
  2. বিকাশ ট্যাবে ক্লিক করুন এবং অ্যাকাউন্ট লিঙ্কিং নির্বাচন করুন।
  3. অ্যাকাউন্ট লিঙ্ক করার পাশের সুইচটি সক্ষম করুন।
  4. অ্যাকাউন্ট তৈরি বিভাগে, হ্যাঁ নির্বাচন করুন।
  5. লিঙ্কিং টাইপে , OAuth এবং Google সাইন ইন এবং ইমপ্লিসিট নির্বাচন করুন।

  6. ক্লায়েন্ট তথ্যে , নিম্নলিখিতগুলি করুন:

    • Google থেকে আসা অনুরোধগুলি শনাক্ত করতে Google-এ আপনার অ্যাকশন দ্বারা জারি করা ক্লায়েন্ট আইডিতে একটি মান বরাদ্দ করুন।
    • আপনার অনুমোদন এবং টোকেন এক্সচেঞ্জ এন্ডপয়েন্টের জন্য URL গুলি সন্নিবেশ করুন৷
  7. Save এ ক্লিক করুন।

আপনার OAuth সার্ভার বাস্তবায়ন করুন

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

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

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

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

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

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

অনুমোদনের শেষ পয়েন্ট পরামিতি
client_id আপনি Google এ যে ক্লায়েন্ট আইডি অ্যাসাইন করেছেন।
redirect_uri যে URLটিতে আপনি এই অনুরোধের প্রতিক্রিয়া পাঠান।
state পুনঃনির্দেশ URI-তে অপরিবর্তিত Google-এ ফেরত পাঠানো হয়।
response_type প্রতিক্রিয়াতে যে মানের প্রত্যাবর্তন করতে হবে। OAuth 2.0 অন্তর্নিহিত প্রবাহের জন্য, প্রতিক্রিয়া প্রকারটি সর্বদা token হয়।

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

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token

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

  1. অনাকাঙ্ক্ষিত বা ভুল কনফিগার করা ক্লায়েন্ট অ্যাপগুলিতে অ্যাক্সেস দেওয়া প্রতিরোধ করতে client_id এবং redirect_uri মান যাচাই করুন:

    • নিশ্চিত করুন যে client_id আপনার Google-এ অ্যাসাইন করা ক্লায়েন্ট আইডির সাথে মেলে।
    • নিশ্চিত করুন যে redirect_uri প্যারামিটার দ্বারা নির্দিষ্ট করা URL-এর নিম্নলিখিত ফর্ম রয়েছে:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      YOUR_PROJECT_ID হল অ্যাকশন কনসোলের প্রকল্প সেটিংস পৃষ্ঠায় পাওয়া আইডি।
  2. ব্যবহারকারী আপনার পরিষেবাতে সাইন ইন করেছেন কিনা তা পরীক্ষা করুন৷ ব্যবহারকারী সাইন ইন না করলে, আপনার পরিষেবার সাইন-ইন বা সাইন-আপ প্রবাহ সম্পূর্ণ করুন৷

  3. একটি অ্যাক্সেস টোকেন তৈরি করুন যা Google আপনার API অ্যাক্সেস করতে ব্যবহার করবে। অ্যাক্সেস টোকেন যেকোন স্ট্রিং মান হতে পারে, তবে এটি অবশ্যই ব্যবহারকারী এবং ক্লায়েন্টকে অনন্যভাবে উপস্থাপন করতে হবে এবং টোকেনটি অনুমানযোগ্য হতে হবে না।

  4. একটি HTTP প্রতিক্রিয়া পাঠান যা ব্যবহারকারীর ব্রাউজারকে redirect_uri প্যারামিটার দ্বারা নির্দিষ্ট URL-এ পুনঃনির্দেশিত করে। URL খণ্ডে নিম্নলিখিত সমস্ত প্যারামিটার অন্তর্ভুক্ত করুন:

    • access_token : আপনি এইমাত্র যে অ্যাক্সেস টোকেন তৈরি করেছেন
    • token_type : স্ট্রিং bearer
    • state : মূল অনুরোধ থেকে অপরিবর্তিত রাষ্ট্রের মান নিম্নোক্ত URL এর একটি উদাহরণ:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Google-এর OAuth 2.0 রিডাইরেক্ট হ্যান্ডলার অ্যাক্সেস টোকেন পাবে এবং নিশ্চিত করবে যে state মান পরিবর্তন হয়নি। Google আপনার পরিষেবার জন্য একটি অ্যাক্সেস টোকেন পাওয়ার পরে, Google AppRequest- এর অংশ হিসাবে আপনার অ্যাকশনের পরবর্তী কলগুলিতে টোকেনটি সংযুক্ত করবে।

স্বয়ংক্রিয় লিঙ্কিং পরিচালনা করুন

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

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

অনুরোধের নিম্নলিখিত ফর্ম আছে:

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

grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&intent=get&assertion=JWT&consent_code=CONSENT_CODE&scope=SCOPES

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

টোকেন এন্ডপয়েন্ট প্যারামিটার
grant_type টোকেনের ধরন বিনিময় হচ্ছে। এই অনুরোধগুলির জন্য, এই প্যারামিটারের মান আছে urn:ietf:params:oauth:grant-type:jwt-bearer
intent এই অনুরোধগুলির জন্য, এই প্যারামিটারের মান হল `গেট`।
assertion একটি JSON ওয়েব টোকেন (JWT) যা Google ব্যবহারকারীর পরিচয়ের একটি স্বাক্ষরিত দাবী প্রদান করে। JWT-তে ব্যবহারকারীর Google অ্যাকাউন্ট আইডি, নাম এবং ইমেল ঠিকানা অন্তর্ভুক্ত তথ্য রয়েছে।
consent_code ঐচ্ছিক : উপস্থিত থাকাকালীন, একটি এককালীন কোড যা নির্দেশ করে যে ব্যবহারকারী নির্দিষ্ট স্কোপগুলি অ্যাক্সেস করার জন্য আপনার অ্যাকশনের জন্য সম্মতি দিয়েছেন।
scope ঐচ্ছিক : ব্যবহারকারীদের কাছ থেকে অনুরোধ করার জন্য আপনি Google-কে কনফিগার করেছেন এমন যেকোনো স্কোপ।

যখন আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট লিঙ্ক করার অনুরোধ পায়, তখন এটি নিম্নলিখিতগুলি করা উচিত:

JWT দাবী যাচাই এবং ডিকোড করুন

আপনি আপনার ভাষার জন্য একটি JWT-ডিকোডিং লাইব্রেরি ব্যবহার করে JWT দাবিকে যাচাই এবং ডিকোড করতে পারেন। টোকেনের স্বাক্ষর যাচাই করতে Google-এর সর্বজনীন কী ( JWK বা PEM ফর্ম্যাটে উপলব্ধ) ব্যবহার করুন।

ডিকোড করা হলে, JWT দাবী নিম্নলিখিত উদাহরণের মত দেখায়:

{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion'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"
}

টোকেনের স্বাক্ষর যাচাই করার পাশাপাশি, নিশ্চিত করুন যে দাবীর ইস্যুকারী ( iss ক্ষেত্র) হল https://accounts.google.com এবং দর্শক ( aud ফিল্ড) হল আপনার অ্যাকশনের জন্য নির্ধারিত ক্লায়েন্ট আইডি।

Google অ্যাকাউন্টটি ইতিমধ্যে আপনার প্রমাণীকরণ সিস্টেমে উপস্থিত আছে কিনা তা পরীক্ষা করুন

নিম্নলিখিত শর্তগুলির মধ্যে কোনটি সত্য কিনা তা পরীক্ষা করুন:

  • দাবীর sub ফিল্ডে পাওয়া Google অ্যাকাউন্ট আইডি আপনার ব্যবহারকারী ডাটাবেসে রয়েছে।
  • দাবীর ইমেল ঠিকানা আপনার ব্যবহারকারী ডাটাবেসের একজন ব্যবহারকারীর সাথে মেলে।

যদি উভয় শর্ত সত্য হয়, ব্যবহারকারী ইতিমধ্যে সাইন আপ করেছেন এবং আপনি একটি অ্যাক্সেস টোকেন ইস্যু করতে পারেন।

যদি দাবীতে উল্লেখ করা Google অ্যাকাউন্ট আইডি বা ইমেল ঠিকানার কোনোটিই আপনার ডাটাবেসের ব্যবহারকারীর সাথে মেলে না, তবে ব্যবহারকারী এখনও সাইন আপ করেননি। এই ক্ষেত্রে, আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট একটি HTTP 401 ত্রুটির সাথে উত্তর দিতে হবে, যা error=user_not_found উল্লেখ করে, নিম্নলিখিত উদাহরণের মতো:

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8

{
  "error":"user_not_found",
}
যখন Google একটি user_not_found ত্রুটি সহ 401 ত্রুটির প্রতিক্রিয়া পায়, তখন Google অনুরোধের সাথে ব্যবহারকারীর প্রোফাইল তথ্য ধারণ করে এমন একটি আইডি টোকেন তৈরি এবং পাঠানোর জন্য সেট করা intent প্যারামিটারের মান সহ আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্টকে কল করে।

Handle account creation via Google Sign-In

When a user needs to create an account on your service, Google makes a request to your token exchange endpoint that specifies intent=create, as in the following example:

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

response_type=token&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&scope=SCOPES&intent=create&consent_code=CONSENT_CODE&assertion=JWT[&NEW_ACCOUNT_INFO]

The assertion parameter contains A JSON Web Token (JWT) that provides a signed assertion of the Google user's identity. The JWT contains information that includes the user's Google Account ID, name, and email address, which you can use to create a new account on your service.

To respond to account creation requests, your token exchange endpoint must do the following:

JWT দাবী যাচাই এবং ডিকোড করুন

আপনি আপনার ভাষার জন্য একটি JWT-ডিকোডিং লাইব্রেরি ব্যবহার করে JWT দাবিকে যাচাই এবং ডিকোড করতে পারেন। টোকেনের স্বাক্ষর যাচাই করতে Google-এর সর্বজনীন কী ( JWK বা PEM ফর্ম্যাটে উপলব্ধ) ব্যবহার করুন।

ডিকোড করা হলে, JWT দাবী নিম্নলিখিত উদাহরণের মত দেখায়:

{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The assertion's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Your server's client ID
  "iat": 233366400,         // Unix timestamp of the assertion's creation time
  "exp": 233370000,         // Unix timestamp of the assertion'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"
}

টোকেনের স্বাক্ষর যাচাই করার পাশাপাশি, নিশ্চিত করুন যে দাবীর ইস্যুকারী ( iss ক্ষেত্র) হল https://accounts.google.com এবং দর্শক ( aud ফিল্ড) হল আপনার অ্যাকশনের জন্য নির্ধারিত ক্লায়েন্ট আইডি।

Validate user information and create new account

Check whether either of the following conditions are true:

  • The Google Account ID, found in the assertion's sub field, is in your user database.
  • The email address in the assertion matches a user in your user database.

If either condition is true, prompt the user to link their existing account with their Google Account by responding to the request with an HTTP 401 error, specifying error=linking_error and the user's email address as the login_hint, as in the following example:

HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8

{
  "error":"linking_error",
  "login_hint":"foo@bar.com"
}

If neither condition is true, create a new user account using the information provided in the JWT. New accounts do not typically have a password set. It is recommended that you add Google Sign In to other platforms to enable users to log in via Google across the surfaces of your application. Alternatively, you can email the user a link that starts your password recovery flow to allow the user to set a password for signing in on other platforms.

When the creation is completed, issue an access token and return the values in a JSON object in the body of your HTTPS response, like in the following example:

{
  "token_type": "Bearer",
  "access_token": "ACCESS_TOKEN",
  
  "expires_in": SECONDS_TO_EXPIRATION
}

প্রমাণীকরণ প্রবাহের জন্য ভয়েস ইউজার ইন্টারফেস ডিজাইন করুন

ব্যবহারকারী যাচাই করা হয়েছে কিনা তা পরীক্ষা করুন এবং অ্যাকাউন্ট লিঙ্কিং প্রবাহ শুরু করুন

  1. অ্যাকশন কনসোলে আপনার অ্যাকশন বিল্ডার প্রকল্পটি খুলুন।
  2. আপনার অ্যাকশনে অ্যাকাউন্ট লিঙ্ক করা শুরু করতে একটি নতুন দৃশ্য তৈরি করুন:
    1. দৃশ্যে ক্লিক করুন।
    2. একটি নতুন দৃশ্য যোগ করতে যোগ (+) আইকনে ক্লিক করুন।
  3. সদ্য নির্মিত দৃশ্যে, শর্তগুলির জন্য যোগ আইকনে ক্লিক করুন।
  4. কথোপকথনের সাথে যুক্ত ব্যবহারকারী একজন যাচাইকৃত ব্যবহারকারী কিনা তা পরীক্ষা করে এমন একটি শর্ত যোগ করুন। চেক ব্যর্থ হলে, কথোপকথনের সময় আপনার অ্যাকশন অ্যাকাউন্ট লিঙ্কিং সম্পাদন করতে পারে না, এবং অ্যাকাউন্ট লিঙ্ক করার প্রয়োজন নেই এমন কার্যকারিতাগুলিতে অ্যাক্সেস প্রদানে ফিরে আসা উচিত।
    1. শর্তের অধীনে Enter new expression ক্ষেত্রটিতে, নিম্নলিখিত যুক্তিটি লিখুন: user.verificationStatus != "VERIFIED"
    2. ট্রানজিশনের অধীনে, এমন একটি দৃশ্য নির্বাচন করুন যার জন্য অ্যাকাউন্ট লিঙ্ক করার প্রয়োজন নেই বা এমন একটি দৃশ্য যা গেস্ট-অনলি কার্যকারিতার প্রবেশ বিন্দু।

  1. শর্তের জন্য অ্যাড আইকনে ক্লিক করুন।
  2. ব্যবহারকারীর কোনো সংশ্লিষ্ট পরিচয় না থাকলে একটি অ্যাকাউন্ট লিঙ্কিং ফ্লো ট্রিগার করার জন্য একটি শর্ত যোগ করুন।
    1. শর্তের অধীনে Enter new expression ক্ষেত্রটিতে, নিম্নলিখিত যুক্তিটি লিখুন:: user.verificationStatus == "VERIFIED"
    2. ট্রানজিশনের অধীনে, অ্যাকাউন্ট লিঙ্কিং সিস্টেম দৃশ্যটি নির্বাচন করুন।
    3. Save এ ক্লিক করুন।

সংরক্ষণ করার পরে, আপনার প্রকল্পে <SceneName>_AccountLinking নামে একটি নতুন অ্যাকাউন্ট লিঙ্কিং সিস্টেম দৃশ্য যোগ করা হয়েছে।

অ্যাকাউন্ট লিঙ্কিং দৃশ্য কাস্টমাইজ করুন

  1. দৃশ্যের অধীনে, অ্যাকাউন্ট লিঙ্কিং সিস্টেম দৃশ্য নির্বাচন করুন।
  2. সেন্ড প্রম্পটে ক্লিক করুন এবং ব্যবহারকারীকে বর্ণনা করতে একটি ছোট বাক্য যোগ করুন কেন অ্যাকশন তাদের পরিচয় অ্যাক্সেস করতে হবে (উদাহরণস্বরূপ "আপনার পছন্দগুলি সংরক্ষণ করতে")।
  3. Save এ ক্লিক করুন।

  1. শর্তের অধীনে, ব্যবহারকারী সফলভাবে অ্যাকাউন্ট লিঙ্কিং সম্পন্ন করলে ক্লিক করুন।
  2. ব্যবহারকারী যদি তাদের অ্যাকাউন্ট লিঙ্ক করতে সম্মত হন তবে কীভাবে প্রবাহটি চলবে তা কনফিগার করুন। উদাহরণ স্বরূপ, যেকোন কাস্টম বিজনেস লজিক প্রসেস করতে ওয়েবহুককে কল করুন এবং মূল দৃশ্যে ফিরে যেতে।
  3. Save এ ক্লিক করুন।

  1. শর্তের অধীনে, ব্যবহারকারী অ্যাকাউন্ট লিঙ্কিং বাতিল বা খারিজ করলে ক্লিক করুন।
  2. ব্যবহারকারী যদি তাদের অ্যাকাউন্ট লিঙ্ক করতে রাজি না হয় তবে কীভাবে প্রবাহটি চলবে তা কনফিগার করুন। উদাহরণস্বরূপ, একটি স্বীকৃতিমূলক বার্তা পাঠান এবং এমন দৃশ্যগুলিতে পুনঃনির্দেশ করুন যা কার্যকারিতা প্রদান করে যার জন্য অ্যাকাউন্ট লিঙ্ক করার প্রয়োজন নেই৷
  3. Save এ ক্লিক করুন।

  1. শর্তের অধীনে, সিস্টেম বা নেটওয়ার্ক ত্রুটি দেখা দিলে ক্লিক করুন।
  2. সিস্টেম বা নেটওয়ার্ক ত্রুটির কারণে অ্যাকাউন্ট লিঙ্কিং ফ্লো সম্পূর্ণ না হলে কীভাবে ফ্লো চলবে তা কনফিগার করুন। উদাহরণস্বরূপ, একটি স্বীকৃতিমূলক বার্তা পাঠান এবং এমন দৃশ্যগুলিতে পুনঃনির্দেশ করুন যা কার্যকারিতা প্রদান করে যার জন্য অ্যাকাউন্ট লিঙ্ক করার প্রয়োজন নেই৷
  3. Save এ ক্লিক করুন।

ডেটা অ্যাক্সেসের অনুরোধগুলি পরিচালনা করুন

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