শিল্প-মানসম্মত OAuth 2.0 অনুমোদন কোড প্রবাহ ব্যবহার করে অ্যাকাউন্টগুলো সংযুক্ত করা হয়।
এজেন্টদের জন্য OAuth 2.1 এবং PKCE
স্টেটলেস এআই এজেন্ট এবং মাল্টি-মোডাল পাইপলাইনের জন্য OAuth 2.1 প্রয়োগের সুপারিশ করা হয়।
- PKCE (প্রুফ কী ফর কোড এক্সচেঞ্জ) : অনুমোদন কোডের প্রবাহ সুরক্ষিত করতে এবং আড়িপাতার আক্রমণ প্রতিরোধ করতে এটি অবশ্যই ব্যবহার করতে হবে।
- কোনো অন্তর্নিহিত প্রবাহ নেই : অন্তর্নিহিত প্রবাহ URL-এ অ্যাক্সেস টোকেন প্রকাশ করে, যা এজেন্ট পরিবেশের জন্য একটি নিরাপত্তা ঝুঁকি।
আপনার পরিষেবাতে অবশ্যই OAuth 2.0/2.1 অনুবর্তী অনুমোদন এবং টোকেন বিনিময় এন্ডপয়েন্ট সমর্থন থাকতে হবে।
প্রকল্পটি তৈরি করুন
অ্যাকাউন্ট লিঙ্কিং ব্যবহার করার জন্য আপনার প্রজেক্ট তৈরি করতে:
- গুগল এপিআই কনসোলে যান।
- প্রজেক্ট তৈরি করুন -এ ক্লিক করুন।
- একটি নাম লিখুন অথবা তৈরি হওয়া পরামর্শটি গ্রহণ করুন।
- অবশিষ্ট ক্ষেত্রগুলি নিশ্চিত করুন বা সম্পাদনা করুন।
- তৈরি করুন- এ ক্লিক করুন।
আপনার প্রজেক্ট আইডি দেখতে:
- গুগল এপিআই কনসোলে যান।
- ল্যান্ডিং পেজের টেবিলে আপনার প্রজেক্টটি খুঁজুন। প্রজেক্ট আইডিটি ' ID' কলামে দেখা যাবে।
আপনার OAuth সম্মতি স্ক্রিন কনফিগার করুন
গুগল অ্যাকাউন্ট লিঙ্ক করার প্রক্রিয়ার মধ্যে একটি সম্মতি স্ক্রিন অন্তর্ভুক্ত থাকে, যা ব্যবহারকারীদের জানিয়ে দেয় কোন অ্যাপ্লিকেশন তাদের ডেটাতে অ্যাক্সেস চাইছে, তারা কী ধরনের ডেটা চাইছে এবং কোন শর্তাবলী প্রযোজ্য। গুগল এপিআই ক্লায়েন্ট আইডি তৈরি করার আগে আপনাকে আপনার OAuth সম্মতি স্ক্রিনটি কনফিগার করতে হবে।
- গুগল এপিআই কনসোলের OAuth সম্মতি স্ক্রিন পৃষ্ঠাটি খুলুন।
- অনুরোধ করা হলে, আপনার এইমাত্র তৈরি করা প্রজেক্টটি নির্বাচন করুন।
"OAuth সম্মতি স্ক্রিন" পৃষ্ঠায়, ফর্মটি পূরণ করুন এবং "সংরক্ষণ করুন" বোতামে ক্লিক করুন।
অ্যাপ্লিকেশনের নাম: যে অ্যাপ্লিকেশনটি সম্মতি চাইছে তার নাম। নামটি আপনার অ্যাপ্লিকেশনকে সঠিকভাবে প্রতিফলিত করবে এবং ব্যবহারকারীরা অন্যত্র যে অ্যাপ্লিকেশনের নাম দেখেন তার সাথে সামঞ্জস্যপূর্ণ হবে। অ্যাকাউন্ট লিঙ্কিং সম্মতি স্ক্রিনে অ্যাপ্লিকেশনের নামটি দেখানো হবে।
অ্যাপ্লিকেশন লোগো: সম্মতি স্ক্রিনের একটি ছবি যা ব্যবহারকারীদের আপনার অ্যাপটি চিনতে সাহায্য করবে। লোগোটি অ্যাকাউন্ট লিঙ্কিং সম্মতি স্ক্রিনে এবং অ্যাকাউন্ট সেটিংসে দেখানো হয়।
সহায়তা ইমেল: ব্যবহারকারীরা তাদের সম্মতি সংক্রান্ত প্রশ্ন নিয়ে আপনার সাথে যোগাযোগ করতে পারেন।
গুগল এপিআই-এর স্কোপ: স্কোপ আপনার অ্যাপ্লিকেশনকে ব্যবহারকারীর ব্যক্তিগত গুগল ডেটা অ্যাক্সেস করার অনুমতি দেয়। গুগল অ্যাকাউন্ট লিঙ্কিং ব্যবহারের ক্ষেত্রে, ডিফল্ট স্কোপ (ইমেল, প্রোফাইল, ওপেনআইডি) যথেষ্ট, আপনার কোনো সংবেদনশীল স্কোপ যোগ করার প্রয়োজন নেই। সাধারণত, শুরুতেই অনুরোধ না করে, যখন অ্যাক্সেসের প্রয়োজন হয়, তখন পর্যায়ক্রমে স্কোপের জন্য অনুরোধ করা একটি উত্তম অভ্যাস। আরও জানুন ।
অনুমোদিত ডোমেইন: আপনাকে এবং আপনার ব্যবহারকারীদের সুরক্ষিত রাখতে, গুগল শুধুমাত্র সেইসব অ্যাপ্লিকেশনকেই অনুমোদিত ডোমেইন ব্যবহার করার অনুমতি দেয়, যেগুলো OAuth ব্যবহার করে প্রমাণীকরণ করে। আপনার অ্যাপ্লিকেশনের লিঙ্কগুলো অবশ্যই অনুমোদিত ডোমেইনে হোস্ট করা থাকতে হবে। আরও জানুন ।
অ্যাপ্লিকেশন হোমপেজ লিঙ্ক: আপনার অ্যাপ্লিকেশনের হোম পেজ। এটি অবশ্যই একটি অনুমোদিত ডোমেইনে হোস্ট করা থাকতে হবে।
অ্যাপ্লিকেশন গোপনীয়তা নীতি লিঙ্ক: গুগল অ্যাকাউন্ট লিঙ্ক করার সম্মতি স্ক্রিনে দেখানো হয়। অবশ্যই একটি অনুমোদিত ডোমেইনে হোস্ট করা থাকতে হবে।
অ্যাপ্লিকেশন পরিষেবার শর্তাবলীর লিঙ্ক (ঐচ্ছিক): অবশ্যই একটি অনুমোদিত ডোমেইনে হোস্ট করতে হবে।

চিত্র ১। Tunery নামক একটি কাল্পনিক অ্যাপ্লিকেশনের গুগল অ্যাকাউন্ট লিঙ্ক করার সম্মতি স্ক্রিন।
'ভেরিফিকেশন স্ট্যাটাস' দেখুন, যদি আপনার অ্যাপ্লিকেশনটির ভেরিফিকেশনের প্রয়োজন হয়, তাহলে ভেরিফিকেশনের জন্য আপনার অ্যাপ্লিকেশনটি জমা দিতে 'সাবমিট ফর ভেরিফিকেশন' বোতামে ক্লিক করুন। বিস্তারিত জানার জন্য OAuth ভেরিফিকেশনের প্রয়োজনীয়তাগুলো দেখুন।
আপনার OAuth সার্ভার বাস্তবায়ন করুন
অথরাইজেশন কোড ফ্লো-এর একটি OAuth 2.0 সার্ভার ইমপ্লিমেন্টেশনে দুটি এন্ডপয়েন্ট থাকে, যা আপনার সার্ভিস HTTPS-এর মাধ্যমে উপলব্ধ করে। প্রথম এন্ডপয়েন্টটি হলো অথরাইজেশন এন্ডপয়েন্ট, যা ডেটা অ্যাক্সেসের জন্য ব্যবহারকারীদের কাছ থেকে সম্মতি খোঁজা বা সংগ্রহ করার দায়িত্বে থাকে। যে সকল ব্যবহারকারী আগে থেকে সাইন-ইন করেননি, অথরাইজেশন এন্ডপয়েন্ট তাদের সামনে একটি সাইন-ইন UI উপস্থাপন করে এবং অনুরোধ করা অ্যাক্সেসের জন্য সম্মতি রেকর্ড করে। দ্বিতীয় এন্ডপয়েন্টটি হলো টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট, যা টোকেন নামক এনক্রিপ্টেড স্ট্রিং সংগ্রহ করতে ব্যবহৃত হয়, যা একজন ব্যবহারকারীকে আপনার সার্ভিস অ্যাক্সেস করার অনুমোদন দেয়।
যখন কোনো গুগল অ্যাপ্লিকেশনের আপনার পরিষেবার কোনো একটি এপিআই কল করার প্রয়োজন হয়, তখন গুগল আপনার ব্যবহারকারীদের পক্ষ থেকে এই এপিআইগুলো কল করার অনুমতি নেওয়ার জন্য এই এন্ডপয়েন্টগুলো একত্রে ব্যবহার করে।
গুগল অ্যাকাউন্ট লিঙ্কিং: OAuth অনুমোদন কোড প্রবাহ
নিম্নলিখিত সিকোয়েন্স ডায়াগ্রামটি ব্যবহারকারী, গুগল এবং আপনার পরিষেবার এন্ডপয়েন্টগুলির মধ্যেকার মিথস্ক্রিয়া বিশদভাবে বর্ণনা করে।
ভূমিকা ও দায়িত্ব
নিম্নলিখিত সারণীটি গুগল অ্যাকাউন্ট লিঙ্কিং (GAL) OAuth ফ্লো-তে অংশগ্রহণকারীদের ভূমিকা ও দায়িত্ব সংজ্ঞায়িত করে। উল্লেখ্য যে, GAL-এ গুগল OAuth ক্লায়েন্ট হিসেবে কাজ করে, অপরদিকে আপনার পরিষেবাটি আইডেন্টিটি/সার্ভিস প্রোভাইডার হিসেবে কাজ করে।
| অভিনেতা / উপাদান | GAL ভূমিকা | দায়িত্বসমূহ |
|---|---|---|
| গুগল অ্যাপ / সার্ভার | OAuth ক্লায়েন্ট | প্রবাহটি শুরু করে, অনুমোদন কোড গ্রহণ করে, সেটিকে টোকেনের জন্য বিনিময় করে এবং আপনার পরিষেবার এপিআই অ্যাক্সেস করার জন্য সেগুলোকে নিরাপদে সংরক্ষণ করে। |
| আপনার অনুমোদন এন্ডপয়েন্ট | অনুমোদন সার্ভার | আপনার ব্যবহারকারীদের পরিচয় যাচাই করে এবং গুগলের সাথে তাদের ডেটাতে অ্যাক্সেস শেয়ার করার জন্য তাদের সম্মতি গ্রহণ করে। |
| আপনার টোকেন বিনিময় এন্ডপয়েন্ট | অনুমোদন সার্ভার | অনুমোদন কোড ও রিফ্রেশ টোকেন যাচাই করে এবং গুগল সার্ভারে অ্যাক্সেস টোকেন প্রদান করে। |
| গুগল রিডাইরেক্ট ইউআরআই | কলব্যাক এন্ডপয়েন্ট | আপনার অনুমোদন পরিষেবা থেকে code এবং state মান সহ ব্যবহারকারীর পুনঃনির্দেশ গ্রহণ করে। |
গুগল দ্বারা শুরু করা একটি OAuth 2.0 অনুমোদন কোড ফ্লো সেশনের প্রবাহটি নিম্নরূপ:
- গুগল ব্যবহারকারীর ব্রাউজারে আপনার অথরাইজেশন এন্ডপয়েন্টটি খোলে। যদি কোনো অ্যাকশনের জন্য ফ্লোটি শুধুমাত্র ভয়েস-ভিত্তিক কোনো ডিভাইসে শুরু হয়ে থাকে, তাহলে গুগল সেটির এক্সিকিউশন একটি ফোনে স্থানান্তর করে।
- ব্যবহারকারী আগে থেকে সাইন ইন করা না থাকলে সাইন ইন করেন এবং আগে থেকে অনুমতি না দিয়ে থাকলে আপনার এপিআই (API) ব্যবহার করে তাদের ডেটা অ্যাক্সেস করার জন্য গুগলকে অনুমতি দেন।
- আপনার পরিষেবা একটি অনুমোদন কোড তৈরি করে এবং সেটি গুগলে ফেরত পাঠায়। এটি করার জন্য, অনুরোধের সাথে অনুমোদন কোডটি সংযুক্ত করে ব্যবহারকারীর ব্রাউজারকে আবার গুগলে পুনঃনির্দেশিত করুন।
- গুগল আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্টে অথরাইজেশন কোডটি পাঠায়, যা কোডটির সত্যতা যাচাই করে একটি অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন ফেরত দেয়। অ্যাক্সেস টোকেন হলো একটি স্বল্পস্থায়ী টোকেন, যা আপনার পরিষেবা এপিআই (API) অ্যাক্সেস করার জন্য ক্রেডেনশিয়াল হিসেবে গ্রহণ করে। রিফ্রেশ টোকেন হলো একটি দীর্ঘস্থায়ী টোকেন, যা গুগল সংরক্ষণ করতে পারে এবং মেয়াদ শেষ হয়ে গেলে নতুন অ্যাক্সেস টোকেন সংগ্রহ করতে ব্যবহার করতে পারে।
- ব্যবহারকারী অ্যাকাউন্ট লিঙ্ক করার প্রক্রিয়াটি সম্পন্ন করার পর, গুগল থেকে পাঠানো পরবর্তী প্রতিটি অনুরোধে একটি অ্যাক্সেস টোকেন থাকে।
বাস্তবায়ন রেসিপি
অথরাইজেশন কোড ফ্লো বাস্তবায়ন করতে এই ধাপগুলো অনুসরণ করুন।
ধাপ ১: অনুমোদনের অনুরোধগুলো পরিচালনা করুন
যখন গুগল অ্যাকাউন্ট লিঙ্কিং শুরু করে, তখন এটি ব্যবহারকারীকে আপনার অথরাইজেশন এন্ডপয়েন্টে রিডাইরেক্ট করে। বিস্তারিত প্রোটোকল চুক্তি এবং প্যারামিটার সংক্রান্ত প্রয়োজনীয়তার জন্য, অথরাইজেশন এন্ডপয়েন্ট দেখুন।
অনুরোধটি পরিচালনা করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
অনুরোধটি যাচাই করুন :
- নিশ্চিত করুন যে
client_idটি Google-কে বরাদ্দ করা Client ID-র সাথে মেলে। - নিশ্চিত করুন যে
redirect_uriপ্রত্যাশিত Google রিডাইরেক্ট URL-এর সাথে মেলে:- Prod:
https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID - স্যান্ডবক্স:
https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
- Prod:
- যাচাই করুন যে
response_typeহলোcode।
- নিশ্চিত করুন যে
ব্যবহারকারীকে প্রমাণীকরণ করুন :
- ব্যবহারকারী আপনার পরিষেবাতে সাইন ইন করেছেন কিনা তা যাচাই করুন।
- যদি ব্যবহারকারী সাইন ইন করা না থাকেন, তাহলে তাকে আপনার সাইন-ইন বা সাইন-আপ প্রক্রিয়াটি সম্পন্ন করতে বলুন।
অনুমোদন কোড তৈরি করুন :
- ব্যবহারকারী এবং ক্লায়েন্টের সাথে যুক্ত একটি অনন্য ও অনুমান-অযোগ্য অনুমোদন কোড তৈরি করুন।
- কোডটির মেয়াদ আনুমানিক ১০ মিনিটে শেষ হওয়ার জন্য সেট করুন।
Google-এ ফেরত পাঠান :
- ব্রাউজারকে
redirect_uriতে দেওয়া URL-এ রিডাইরেক্ট করুন। - নিম্নলিখিত কোয়েরি প্যারামিটারগুলো যুক্ত করুন:
-
code: আপনার তৈরি করা অনুমোদন কোড। -
state: গুগল থেকে প্রাপ্ত অপরিবর্তিত অবস্থার মান।
-
- ব্রাউজারকে
ধাপ ২: টোকেন বিনিময়ের অনুরোধগুলো পরিচালনা করুন
আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট দুই ধরনের অনুরোধ প্রক্রিয়া করে: কোডের বিনিময়ে টোকেন গ্রহণ, এবং মেয়াদোত্তীর্ণ অ্যাক্সেস টোকেন নবায়ন। বিস্তারিত প্রোটোকল চুক্তি এবং প্যারামিটারের প্রয়োজনীয়তার জন্য, টোকেন এক্সচেঞ্জ এন্ডপয়েন্ট দেখুন।
এ. টোকেনের জন্য অনুমোদন কোড বিনিময় করুন
যখন গুগল অনুমোদন কোডটি পায়, তখন টোকেনগুলো সংগ্রহ করার জন্য এটি আপনার টোকেন এক্সচেঞ্জ এন্ডপয়েন্টে (POST) কল করে।
অনুরোধটি যাচাই করুন :
-
client_idএবংclient_secretযাচাই করুন। - অনুমোদন কোডটি বৈধ এবং মেয়াদোত্তীর্ণ নয় তা যাচাই করুন।
- নিশ্চিত করুন
redirect_uriধাপ ১-এ ব্যবহৃত মানের সাথে মেলে। - যাচাইকরণ ব্যর্থ হলে,
{"error": "invalid_grant"}সহ একটি HTTP400 Bad Requestফেরত দিন।
-
টোকেন ইস্যু করুন :
- একটি দীর্ঘস্থায়ী
refresh_tokenএবং একটি স্বল্পমেয়াদীaccess_token(সাধারণত ১ ঘণ্টা) তৈরি করুন। - স্ট্যান্ডার্ড JSON টোকেন প্রতিক্রিয়া সহ একটি HTTP
200 OKফেরত দিন।
- একটি দীর্ঘস্থায়ী
খ. অ্যাক্সেস টোকেন রিফ্রেশ করুন
অ্যাক্সেস টোকেনের মেয়াদ শেষ হয়ে গেলে, গুগল রিফ্রেশ টোকেন ব্যবহার করে একটি নতুন টোকেনের জন্য অনুরোধ করে।
অনুরোধটি যাচাই করুন :
-
client_id,client_secretএবংrefresh_tokenযাচাই করুন। - যাচাইকরণ ব্যর্থ হলে,
{"error": "invalid_grant"}সহ একটি HTTP400 Bad Requestফেরত দিন।
-
নতুন অ্যাক্সেস টোকেন ইস্যু করুন :
- একটি নতুন স্বল্পস্থায়ী
access_tokenতৈরি করুন। - JSON টোকেন প্রতিক্রিয়া সহ একটি HTTP
200 OKফেরত দিন (ঐচ্ছিকভাবে একটি নতুন রিফ্রেশ টোকেন অন্তর্ভুক্ত করে)।
- একটি নতুন স্বল্পস্থায়ী
Handle userinfo requests
The userinfo endpoint is an OAuth 2.0 protected resource that return claims about the linked user. Implementing and hosting the userinfo endpoint is optional, except for the following use cases:
- Linked Account Sign-In with Google One Tap.
- Frictionless subscription on AndroidTV.
After the access token has been successfully retrieved from your token endpoint, Google sends a request to your userinfo endpoint to retrieve basic profile information about the linked user.
| userinfo endpoint request headers | |
|---|---|
Authorization header |
The access token of type Bearer. |
For example, if your userinfo endpoint is available at
https://myservice.example.com/userinfo, a request might look like the following:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
For your userinfo endpoint to handle requests, do the following steps:
- Extract access token from the Authorization header and return information for the user associated with the access token.
- If the access token is invalid, return an HTTP 401 Unauthorized error with using the
WWW-AuthenticateResponse Header. Below is an example of a userinfo error response: If a 401 Unauthorized, or any other unsuccessful error response is returned during the linking process, the error will be non-recoverable, the retrieved token will be discarded and the user will have to initiate the linking process again.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
If the access token is valid, return and HTTP 200 response with the following JSON object in the body of the HTTPS response:
If your userinfo endpoint returns an HTTP 200 success response, the retrieved token and claims are registered against the user's Google account.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }userinfo endpoint response subA unique ID that identifies the user in your system. emailEmail address of the user. given_nameOptional: First name of the user. family_nameOptional: Last name of the user. nameOptional: Full name of the user. pictureOptional: Profile picture of the user.
আপনার বাস্তবায়ন যাচাই করা
You can validate your implementation by using the OAuth 2.0 Playground tool.
In the tool, do the following steps:
- Click Configuration to open the OAuth 2.0 Configuration window.
- In the OAuth flow field, select Client-side.
- In the OAuth Endpoints field, select Custom.
- Specify your OAuth 2.0 endpoint and the client ID you assigned to Google in the corresponding fields.
- In the Step 1 section, don't select any Google scopes. Instead, leave this field blank or type a scope valid for your server (or an arbitrary string if you don't use OAuth scopes). When you're done, click Authorize APIs.
- In the Step 2 and Step 3 sections, go through the OAuth 2.0 flow and verify that each step works as intended.
You can validate your implementation by using the Google Account Linking Demo tool.
In the tool, do the following steps:
- Click the Sign in with Google button.
- Choose the account you'd like to link.
- Enter the service ID.
- Optionally enter one or more scopes that you will request access for.
- Click Start Demo.
- When prompted, confirm that you may consent and deny the linking request.
- Confirm that you are redirected to your platform.