এই রেফারেন্স পৃষ্ঠায় সেইসব এপিআই এন্ডপয়েন্টগুলোর বিবরণ দেওয়া হয়েছে, যেগুলো গুগলের সাথে অ্যাকাউন্ট লিঙ্কিং সমর্থন করার জন্য আপনার সার্ভিসকে অবশ্যই ইমপ্লিমেন্ট করতে হবে। এর মধ্যে রয়েছে OAuth লিঙ্কিং , স্ট্রিমলাইনড অ্যাকাউন্ট লিঙ্কিং এবং অ্যাপ ফ্লিপ ।
পূর্বশর্ত এবং মানদণ্ড
এই এন্ডপয়েন্টগুলি সফলভাবে বাস্তবায়ন করতে, আপনার পরিষেবাটিকে অবশ্যই নিম্নলিখিত মানগুলি মেনে চলতে হবে:
- OAuth 2.0 : RFC 6749 এর সাথে সঙ্গতিপূর্ণ।
- টোকেন বাতিলকরণ : RFC 7009 এর সাথে সঙ্গতিপূর্ণ।
- JSON ওয়েব টোকেন (JWT) : RFC 7519- এর সাথে সঙ্গতিপূর্ণ (স্ট্রিমলাইনড লিঙ্কিং-এর জন্য আবশ্যক)।
- HTTPS : সকল এন্ডপয়েন্ট অবশ্যই একটি সুরক্ষিত HTTPS সংযোগের মাধ্যমে পরিবেশন করতে হবে।
অনুমোদন এন্ডপয়েন্ট
অনুমোদন এন্ডপয়েন্টটি ব্যবহারকারীদের প্রমাণীকরণ এবং গুগলের সাথে তাদের অ্যাকাউন্ট লিঙ্ক করার জন্য সম্মতি গ্রহণের দায়িত্বে থাকে।
- URL: অ্যাকশন কনসোল বা গুগল ক্লাউড কনসোলে কনফিগার করা হয়েছে।
- পদ্ধতি:
GET
অনুরোধের পরামিতি
| প্যারামিটার | বর্ণনা |
|---|---|
client_id | আপনি গুগলকে যে ক্লায়েন্ট আইডিটি দিয়েছেন। |
redirect_uri | যে URL-এ আপনি এই অনুরোধের প্রতিক্রিয়া পাঠান। |
state | রিডাইরেক্ট ইউআরআই-তে একটি হিসাবরক্ষণের মান অপরিবর্তিতভাবে গুগলে ফেরত পাঠানো হয়। |
response_type | অনুমোদন কোড প্রবাহের জন্য অবশ্যই code হতে হবে। |
scope | (ঐচ্ছিক) গুগল যে ডেটা অনুরোধ করছে তার পরিধিগুলোর তালিকা, যা স্পেস দিয়ে আলাদা করা থাকবে। |
user_locale | (ঐচ্ছিক) গুগল অ্যাকাউন্টের ভাষা সেটিং, যা একটি BCP-47 ল্যাঙ্গুয়েজ ট্যাগ ব্যবহার করে নির্দিষ্ট করা হয় (যেমন, en-US )। |
code_challenge | (OAuth 2.1-এর জন্য আবশ্যক) চ্যালেঞ্জটি কোড ভেরিফায়ার থেকে উদ্ভূত হয়েছে। |
code_challenge_method | (ঐচ্ছিক) চ্যালেঞ্জটি নির্ধারণে ব্যবহৃত পদ্ধতি (যেমন, S256 )। |
টোকেন বিনিময় এন্ডপয়েন্ট
এই এন্ডপয়েন্টটি টোকেনের জন্য অনুমোদন কোড বিনিময় এবং মেয়াদোত্তীর্ণ অ্যাক্সেস টোকেন রিফ্রেশ করার দায়িত্বে রয়েছে।
- URL: অ্যাকশন কনসোল বা গুগল ক্লাউড কনসোলে কনফিগার করা হয়েছে।
- পদ্ধতি:
POST - Content-Type:
application/x-www-form-urlencoded
টোকেনগুলির জন্য বিনিময় অনুমোদন কোড
প্রাথমিক টোকেন বিনিময় অনুরোধে নিম্নলিখিত প্যারামিটারগুলো ব্যবহৃত হয়।
অনুরোধের পরামিতি
| প্যারামিটার | বর্ণনা |
|---|---|
client_id | আপনি গুগলকে যে ক্লায়েন্ট আইডিটি দিয়েছেন। |
client_secret | আপনি গুগলকে যে ক্লায়েন্ট সিক্রেটটি বরাদ্দ করেছেন। |
grant_type | অবশ্যই authorization_code হতে হবে। |
code | অনুমোদন এন্ডপয়েন্ট থেকে প্রাপ্ত অনুমোদন কোড। |
redirect_uri | প্রাথমিক অনুরোধে ব্যবহৃত একই রিডাইরেক্ট ইউআরআই। |
code_verifier | (PKCE-এর জন্য আবশ্যক) মূল ক্রিপ্টোগ্রাফিক র্যান্ডম স্ট্রিং। |
রিফ্রেশ টোকেনের বিনিময়ে অ্যাক্সেস টোকেন নিন
অ্যাক্সেস টোকেন রিফ্রেশ করার সময় নিম্নলিখিত প্যারামিটারগুলো ব্যবহার করা হয়।
অনুরোধের পরামিতি
| প্যারামিটার | বর্ণনা |
|---|---|
client_id | আপনি গুগলকে যে ক্লায়েন্ট আইডিটি দিয়েছেন। |
client_secret | আপনি গুগলকে যে ক্লায়েন্ট সিক্রেটটি বরাদ্দ করেছেন। |
grant_type | অবশ্যই refresh_token হতে হবে। |
refresh_token | রিফ্রেশ টোকেনটি পূর্বে গুগলকে ইস্যু করা হয়েছিল। |
প্রতিক্রিয়া (JSON)
HTTPS রেসপন্সের বডিতে একটি JSON অবজেক্টসহ সফল রেসপন্সটি ফেরত দিন।
ওপেনএপিআই ৩.১ স্কিমা
type: object
required:
- token_type
- access_token
- expires_in
properties:
token_type:
type: string
enum: [bearer]
access_token:
type: string
refresh_token:
type: string
expires_in:
type: integer
- HTTP স্ট্যাটাস:
200 OK - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
| ক্ষেত্র | বর্ণনা |
|---|---|
token_type | আবশ্যক। bearer হতে হবে। |
access_token | আবশ্যক। আপনার পরিষেবার এপিআইগুলো অ্যাক্সেস করার জন্য ব্যবহৃত একটি স্বল্পস্থায়ী টোকেন। |
refresh_token | authorization_code grant_type জন্য আবশ্যক। নতুন অ্যাক্সেস টোকেন পাওয়ার জন্য ব্যবহৃত একটি দীর্ঘস্থায়ী টোকেন। |
expires_in | প্রয়োজনীয়। অ্যাক্সেস টোকেনটির অবশিষ্ট মেয়াদ সেকেন্ডে। |
ত্রুটিপূর্ণ প্রতিক্রিয়া
If a request to the token endpoint fails, return an HTTP 400 Bad Request error along with a JSON response containing the following fields:
- HTTP স্ট্যাটাস:
400 Bad Request - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
| ত্রুটিপূর্ণ ক্ষেত্র (JSON) | বর্ণনা |
|---|---|
error | আবশ্যক। অবশ্যই invalid_grant হতে হবে। |
error_description | (ঐচ্ছিক) অতিরিক্ত তথ্য প্রদানকারী পাঠযোগ্য লেখা। |
স্ট্রিমলাইনড লিঙ্কিং ইনটেন্টগুলি পরিচালনা করুন
If your service supports Streamlined Account Linking (OAuth with Sign in with Google), your token exchange endpoint must additionally support JSON Web Token (JWT) assertions and implement the required check and get intents, and optionally the create intent.
এই অনুরোধগুলিতে নিম্নলিখিত প্যারামিটারগুলি ব্যবহৃত হয়:
অনুরোধের পরামিতি
| প্যারামিটার | বর্ণনা |
|---|---|
intent | যে সুনির্দিষ্ট সরলীকৃত লিঙ্কিং ইন্টেন্টটি অনুরোধ করা হচ্ছে: check , get , অথবা ঐচ্ছিকভাবে create । |
grant_type | এই অনুরোধগুলির জন্য, এই প্যারামিটারটির মান সর্বদা urn:ietf:params:oauth:grant-type:jwt-bearer হয়। |
assertion | একটি JSON ওয়েব টোকেন (JWT) যা গুগল ব্যবহারকারীর পরিচয়ের একটি স্বাক্ষরিত নিশ্চয়তা প্রদান করে। এই JWT-তে ব্যবহারকারীর গুগল অ্যাকাউন্ট আইডি, নাম এবং ইমেল ঠিকানার মতো তথ্য থাকে। আপনার সার্ভারকে অবশ্যই JWT যাচাইকরণ বিভাগে তালিকাভুক্ত মানদণ্ড ব্যবহার করে এই JWT-টি যাচাই করতে হবে। |
client_id | আপনি গুগলকে যে ক্লায়েন্ট আইডিটি দিয়েছেন। |
client_secret | আপনি গুগলকে যে ক্লায়েন্ট সিক্রেটটি বরাদ্দ করেছেন। |
scope | ঐচ্ছিক: এমন যেকোনো স্কোপ যা আপনি ব্যবহারকারীদের কাছ থেকে অনুরোধ করার জন্য গুগলকে কনফিগার করেছেন। সাধারণত get এবং create ইন্টেন্টের সময় উপস্থিত থাকে। |
response_type | ইন্টেন্ট create জন্য আবশ্যক: অবশ্যই token হিসেবে সেট করতে হবে। |
JWT বৈধতা
To ensure the security of streamlined linking, your server must validate the assertion (JWT) using the following criteria:
- স্বাক্ষর : গুগলের পাবলিক কী-এর ( গুগলের JWK এন্ডপয়েন্টে উপলব্ধ) সাথে স্বাক্ষরটি যাচাই করুন।
- ইস্যুকারী (
iss) : অবশ্যইhttps://accounts.google.comহতে হবে। - অডিয়েন্স (
aud) : আপনার ইন্টিগ্রেশনের জন্য নির্ধারিত Google API ক্লায়েন্ট আইডির সাথে অবশ্যই মিলতে হবে। - মেয়াদ শেষ হওয়া (
exp) : অবশ্যই ভবিষ্যতে হতে হবে।
check অভিপ্রায়ের প্রতিক্রিয়া
intent=check সহ একটি অনুরোধ যাচাই করে যে, ডিকোড করা JWT অ্যাসারশনে sub বা email ক্লেইম দ্বারা চিহ্নিত Google অ্যাকাউন্টটি আপনার ব্যবহারকারী ডেটাবেসে বিদ্যমান আছে কি না।
- HTTP স্ট্যাটাস:
200 OK(অ্যাকাউন্ট পাওয়া গেছে) অথবা404 Not Found(অ্যাকাউন্ট পাওয়া যায়নি) - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
| ক্ষেত্র | বর্ণনা |
|---|---|
account_found | আবশ্যক। অ্যাকাউন্টটি বিদ্যমান থাকলে true , অন্যথায় false । |
get intent-এর প্রতিক্রিয়া
intent=get সহ একটি অনুরোধ বিদ্যমান গুগল অ্যাকাউন্টের জন্য অ্যাক্সেস টোকেন চেয়ে থাকে।
- HTTP স্ট্যাটাস:
200 OK - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
সফল রেসপন্স JSON অবজেক্টটি একটি সফল স্ট্যান্ডার্ড টোকেন এক্সচেঞ্জ রেসপন্সের (যা access_token , refresh_token ইত্যাদি রিটার্ন করে) হুবহু একই কাঠামো ব্যবহার করে।
যদি অ্যাকাউন্টটি লিঙ্ক করা না যায়, তাহলে একটি HTTP 401 ত্রুটি প্রদর্শিত হয়।
- HTTP স্ট্যাটাস:
401 Unauthorized - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
| ত্রুটিপূর্ণ ক্ষেত্র (JSON) | বর্ণনা |
|---|---|
error | আবশ্যক। অবশ্যই linking_error হতে হবে। |
login_hint | (ঐচ্ছিক) ফলব্যাক OAuth লিঙ্কিং ফ্লো-তে পাঠানোর জন্য ব্যবহারকারীর ইমেল ঠিকানা। |
ইন্টেন্ট create প্রতিক্রিয়া (ঐচ্ছিক)
create intent-টি ঐচ্ছিক। যদি আপনার পরিষেবা Streamlined Linking ব্যবহার করে অ্যাকাউন্ট তৈরি সমর্থন করে, তাহলে intent=create সহ একটি অনুরোধ JWT-তে প্রদত্ত তথ্য দিয়ে একটি নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরির প্রক্রিয়া শুরু করে।
- HTTP স্ট্যাটাস:
200 OK - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
সফল রেসপন্স JSON অবজেক্টটি একটি সফল স্ট্যান্ডার্ড টোকেন এক্সচেঞ্জ রেসপন্সের (যা access_token , refresh_token ইত্যাদি রিটার্ন করে) হুবহু একই কাঠামো ব্যবহার করে।
যদি ব্যবহারকারী আগে থেকেই বিদ্যমান থাকে, অথবা আপনার পরিষেবা অ্যাকাউন্ট তৈরি সমর্থন না করে, তাহলে একটি HTTP 401 ত্রুটি ফেরত দেওয়া হয়, যা গুগলকে সাধারণ OAuth লিঙ্কিং পদ্ধতিতে ফিরে যেতে নির্দেশ দেয়।
- HTTP স্ট্যাটাস:
401 Unauthorized - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
| ত্রুটিপূর্ণ ক্ষেত্র (JSON) | বর্ণনা |
|---|---|
error | আবশ্যক। অবশ্যই linking_error হতে হবে। |
login_hint | ফলব্যাক OAuth লিঙ্কিং ফ্লো-তে পাঠানোর জন্য ব্যবহারকারীর ইমেল ঠিকানা। |
ব্যবহারকারীর তথ্য এন্ডপয়েন্ট (ঐচ্ছিক)
OpenID Connect Core 1.0 স্পেসিফিকেশনে উল্লেখিত নিয়ম অনুযায়ী, লিঙ্ক করা ব্যবহারকারীর প্রাথমিক প্রোফাইল তথ্য পুনরুদ্ধার করতে এটি ব্যবহৃত হয়। 'Streamlined Linking' বা 'One Tap sign-in'-এর মতো ফিচারগুলোর জন্য এটি আবশ্যক।
- পদ্ধতি:
GET - প্রমাণীকরণ:
Authorization: Bearer ACCESS_TOKEN
প্রতিক্রিয়া (JSON)
HTTPS রেসপন্সের বডিতে একটি JSON অবজেক্টসহ সফল রেসপন্সটি ফেরত দিন।
- HTTP স্ট্যাটাস:
200 OK - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
প্রতিক্রিয়া ক্ষেত্র
| ক্ষেত্র | বর্ণনা |
|---|---|
sub | আবশ্যক। একটি অনন্য আইডি যা আপনার সিস্টেমে ব্যবহারকারীকে শনাক্ত করে। |
email | আবশ্যক। ব্যবহারকারীর ইমেইল ঠিকানা। |
email_verified | আবশ্যক। ইমেইল ঠিকানাটি যাচাই করা হয়েছে কিনা তা নির্দেশকারী একটি বুলিয়ান মান। |
given_name | (ঐচ্ছিক) ব্যবহারকারীর প্রথম নাম। |
family_name | (ঐচ্ছিক) ব্যবহারকারীর শেষ নাম। |
name | (ঐচ্ছিক) ব্যবহারকারীর পুরো নাম। |
picture | (ঐচ্ছিক) ব্যবহারকারীর প্রোফাইল ছবির ইউআরএল। |
ত্রুটিপূর্ণ প্রতিক্রিয়া
অ্যাক্সেস টোকেনটি অবৈধ বা মেয়াদোত্তীর্ণ হলে, একটি HTTP 401 Unauthorized ত্রুটি ফেরত দিন। আপনার WWW-Authenticate রেসপন্স হেডারটিও অন্তর্ভুক্ত করা উচিত।
লিঙ্কিং প্রক্রিয়ার সময় প্রাপ্ত যেকোনো অসফল প্রতিক্রিয়া (4xx বা 5xx) পুনরুদ্ধারযোগ্য নয় বলে বিবেচিত হয়। এই ক্ষেত্রে, Google পুনরুদ্ধার করা যেকোনো টোকেন বাতিল করে দেবে এবং ব্যবহারকারীকে অবশ্যই অ্যাকাউন্ট লিঙ্কিং প্রক্রিয়াটি পুনরায় শুরু করতে হবে।
টোকেন বাতিলকরণ এন্ডপয়েন্ট (ঐচ্ছিক)
যখন কোনো ব্যবহারকারী গুগল প্ল্যাটফর্ম থেকে তাদের অ্যাকাউন্ট আনলিঙ্ক করেন, তখন এটি গুগলকে আপনার পরিষেবাতে অবহিত করার সুযোগ দেয়। এই এন্ডপয়েন্টটিকে অবশ্যই RFC 7009- এ বর্ণিত শর্তাবলী পূরণ করতে হবে।
- পদ্ধতি:
POST - Content-Type:
application/x-www-form-urlencoded
অনুরোধের পরামিতি
| প্যারামিটার | বর্ণনা |
|---|---|
client_id | একটি স্ট্রিং যা অনুরোধের উৎস হিসেবে গুগলকে শনাক্ত করে। এই স্ট্রিংটি আপনার সিস্টেমে গুগলের অনন্য শনাক্তকারী হিসেবে অবশ্যই নিবন্ধিত থাকতে হবে। |
client_secret | একটি গোপন স্ট্রিং যা আপনি আপনার পরিষেবার জন্য গুগলে নিবন্ধন করেছেন। |
token | টোকেনটি বাতিল করা হবে। |
token_type_hint | (ঐচ্ছিক) কোন ধরনের টোকেন বাতিল করা হচ্ছে সে সম্পর্কে একটি ইঙ্গিত, হয় access_token অথবা refresh_token । নির্দিষ্ট করে না দেওয়া হলে, ডিফল্ট হিসেবে access_token ব্যবহৃত হবে। |
প্রতিক্রিয়া
টোকেনটি সফলভাবে মুছে ফেলা হলে, অথবা টোকেনটি আগে থেকেই অবৈধ হলে একটি সফল প্রতিক্রিয়া ফেরত দিন।
- HTTP স্ট্যাটাস:
200 OK - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8
ত্রুটিপূর্ণ প্রতিক্রিয়া
যদি কোনো কারণে টোকেনটি মুছে ফেলা না যায় (যেমন ডাটাবেস অনুপলব্ধতা), তাহলে একটি HTTP 503 ত্রুটি ফেরত দিন। গুগল পরে অথবা Retry-After হেডারে নির্দেশিত সময় অনুযায়ী অনুরোধটি পুনরায় চেষ্টা করবে।
- HTTP স্থিতি:
503 Service Unavailable - কন্টেন্ট-টাইপ:
application/json;charset=UTF-8 - হেডার:
Retry-After: <HTTP-date / delay-seconds>