লিঙ্ক করা অ্যাকাউন্ট সাইন ইন

Google অ্যাকাউন্ট লিঙ্কিং Google অ্যাকাউন্ট ধারকদের দ্রুত, নির্বিঘ্নে এবং নিরাপদে আপনার পরিষেবার সাথে সংযোগ করতে এবং Google-এর সাথে ডেটা ভাগ করতে সক্ষম করে।

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

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

লিঙ্কড অ্যাকাউন্ট সাইন-ইন বাস্তবায়ন করতে, আপনাকে অবশ্যই নিম্নলিখিত প্রয়োজনীয়তাগুলি পূরণ করতে হবে:

  • আপনার কাছে একটি Google অ্যাকাউন্ট OAuth লিঙ্কিং বাস্তবায়ন রয়েছে যা OAuth 2.0 অনুমোদন কোড প্রবাহকে সমর্থন করে। আপনার OAuth বাস্তবায়নে নিম্নলিখিত শেষ পয়েন্টগুলি অন্তর্ভুক্ত করতে হবে:
  • আপনার একটি Android অ্যাপ আছে।

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

পূর্বশর্ত : ব্যবহারকারী পূর্বে আপনার পরিষেবাতে তাদের অ্যাকাউন্টের সাথে তাদের Google অ্যাকাউন্ট লিঙ্ক করেছেন।

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

আপনার অ্যান্ড্রয়েড অ্যাপে লিঙ্কড অ্যাকাউন্ট সাইন-ইন প্রয়োগ করুন

আপনার অ্যান্ড্রয়েড অ্যাপে লিঙ্কড অ্যাকাউন্ট সাইন-ইন সমর্থন করতে, অ্যান্ড্রয়েড বাস্তবায়ন গাইডের নির্দেশাবলী অনুসরণ করুন।

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

Google আপনার টোকেন এন্ডপয়েন্টে একটি অনুমোদন কোড সংরক্ষণ করার জন্য একটি POST অনুরোধ করে যা আপনি ব্যবহারকারীর আইডি টোকেনের জন্য বিনিময় করেন। অনুরোধটিতে ব্যবহারকারীর অ্যাক্সেস টোকেন এবং একটি Google জারি করা OAuth2 অনুমোদন কোড রয়েছে৷

অনুমোদন কোড সংরক্ষণ করার আগে, আপনাকে অবশ্যই যাচাই করতে হবে অ্যাক্সেস টোকেনটি আপনার দ্বারা Google-কে দেওয়া হয়েছে, যা client_id দ্বারা চিহ্নিত করা হয়েছে।

HTTP অনুরোধ

নমুনা অনুরোধ

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

code=GOOGLE_AUTHORIZATION_CODE
&grant_type=urn:ietf:params:oauth:grant-type:reciprocal
&client_id=CLIENT_ID
&client_secret=CLIENT_SECRET
&access_token=ACCESS_TOKEN

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

টোকেন এন্ডপয়েন্ট প্যারামিটার
code প্রয়োজনীয় Google OAuth2 অনুমোদন কোড
client_id প্রয়োজনীয় ক্লায়েন্ট আইডি যা আপনি Google এ ইস্যু করেছেন
client_secret প্রয়োজনীয় ক্লায়েন্ট সিক্রেট যা আপনি Google এ জারি করেছেন
access_token প্রয়োজনীয় অ্যাক্সেস টোকেন যা আপনি Google এ ইস্যু করেছেন। আপনি ব্যবহারকারীর প্রসঙ্গ পেতে এটি ব্যবহার করবেন
grant_type প্রয়োজনীয় মান অবশ্যই urn:ietf:params:oauth:grant-type:reciprocal এ সেট করা আবশ্যক

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

  • client_id দ্বারা চিহ্নিত Google-কে access_token দেওয়া হয়েছে তা যাচাই করুন।
  • অনুরোধটি বৈধ হলে একটি HTTP 200 (ওকে) প্রতিক্রিয়া দিয়ে সাড়া দিন এবং Google আইডি টোকেনের জন্য প্রমাণীকরণ কোড সফলভাবে বিনিময় করা হয়, অথবা অনুরোধটি অবৈধ হলে একটি HTTP ত্রুটি কোড।

HTTP প্রতিক্রিয়া

সফলতা

HTTP স্ট্যাটাস কোড 200 ওকে রিটার্ন করুন

নমুনা সাফল্য প্রতিক্রিয়া
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{}

ত্রুটি

একটি অবৈধ HTTP অনুরোধের ক্ষেত্রে, নিম্নলিখিত HTTP ত্রুটি কোডগুলির মধ্যে একটি দিয়ে সাড়া দিন:

HTTP স্ট্যাটাস কোড শরীর বর্ণনা
400 {"error": "invalid_request"} অনুরোধটিতে একটি প্যারামিটার নেই তাই সার্ভার অনুরোধটি নিয়ে এগিয়ে যেতে পারে না। অনুরোধে একটি অসমর্থিত প্যারামিটার অন্তর্ভুক্ত থাকলে বা একটি পরামিতি পুনরাবৃত্তি করলেও এটি ফেরত দেওয়া হতে পারে
401 {"error": "invalid_request"} ক্লায়েন্ট প্রমাণীকরণ ব্যর্থ হয়েছে, যেমন অনুরোধে যদি একটি অবৈধ ক্লায়েন্ট আইডি বা গোপন থাকে
401 {"error": "invalid_token"}

প্রতিক্রিয়া শিরোনামে "WWW- প্রমাণীকরণ: বহনকারী" প্রমাণীকরণ চ্যালেঞ্জ অন্তর্ভুক্ত করুন

অংশীদার অ্যাক্সেস টোকেন অবৈধ৷
403 {"error": "insufficient_permission"}

প্রতিক্রিয়া শিরোনামে "WWW- প্রমাণীকরণ: বহনকারী" প্রমাণীকরণ চ্যালেঞ্জ অন্তর্ভুক্ত করুন

অংশীদার অ্যাক্সেস টোকেনে রেসিপ্রোকাল OAuth সম্পাদন করার জন্য প্রয়োজনীয় সুযোগ(গুলি) থাকে না
500 {"error": "internal_error"} সার্ভার সমস্যা

ত্রুটি প্রতিক্রিয়া নিম্নলিখিত ক্ষেত্র থাকা উচিত:

ত্রুটি প্রতিক্রিয়া ক্ষেত্র
error প্রয়োজনীয় ত্রুটি স্ট্রিং
error_description ত্রুটির মানব পাঠযোগ্য বর্ণনা
error_uri ইউআরআই যা ত্রুটি সম্পর্কে আরও বিশদ প্রদান করে
নমুনা ত্রুটি 400 প্রতিক্রিয়া
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
  "error": "invalid_request",
  "error_description": "Request was missing the 'access_token' parameter."
}

আইডি টোকেনের জন্য এক্সচেঞ্জ অনুমোদন কোড

আপনাকে একটি Google ID টোকেনের জন্য প্রাপ্ত অনুমোদন কোডটি বিনিময় করতে হবে যাতে ব্যবহারকারীর Google অ্যাকাউন্ট সম্পর্কে তথ্য রয়েছে৷

একটি Google আইডি টোকেনের জন্য একটি অনুমোদন কোড বিনিময় করতে, https://oauth2.googleapis.com/token এন্ডপয়েন্টে কল করুন এবং নিম্নলিখিত প্যারামিটারগুলি সেট করুন:

ক্ষেত্র অনুরোধ
client_id প্রয়োজনীয় API কনসোল শংসাপত্র পৃষ্ঠা থেকে প্রাপ্ত ক্লায়েন্ট আইডি। এটি সাধারণত নতুন অ্যাকশন অন Google অ্যাপ নামের শংসাপত্র হবে
client_secret প্রয়োজনীয় ক্লায়েন্ট গোপন API কনসোল শংসাপত্র পৃষ্ঠা থেকে প্রাপ্ত
code প্রয়োজনীয় প্রাথমিক অনুরোধে প্রেরিত অনুমোদন কোড
grant_type প্রয়োজনীয় OAuth 2.0 স্পেসিফিকেশনে সংজ্ঞায়িত করা হয়েছে , এই ক্ষেত্রের মান অবশ্যই authorization_code এ সেট করতে হবে।
নমুনা অনুরোধ
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded

code=GOOGLE_AUTHORIZATION_CODE
&grant_type=authorization_code
&client_id=GOOGLE_CLIENT_ID
&client_secret=GOOGLE_CLIENT_SECRET

Google একটি JSON অবজেক্ট ফেরত দিয়ে এই অনুরোধে সাড়া দেয় যাতে একটি স্বল্পকালীন অ্যাক্সেস টোকেন এবং একটি রিফ্রেশ টোকেন রয়েছে।

প্রতিক্রিয়াতে নিম্নলিখিত ক্ষেত্রগুলি রয়েছে:

প্রতিক্রিয়া ক্ষেত্র
access_token Google-প্রদত্ত অ্যাক্সেস টোকেন যা আপনার অ্যাপ্লিকেশন একটি Google API অনুরোধ অনুমোদন করতে পাঠায়
id_token আইডি টোকেনে ব্যবহারকারীর Google অ্যাকাউন্টের তথ্য থাকে। বৈধকরণ প্রতিক্রিয়া বিভাগে আইডি টোকেন প্রতিক্রিয়া কীভাবে ডিকোড এবং যাচাই করা যায় তার বিশদ বিবরণ রয়েছে
expires_in সেকেন্ডে অ্যাক্সেস টোকেনের অবশিষ্ট জীবনকাল
refresh_token একটি টোকেন যা আপনি একটি নতুন অ্যাক্সেস টোকেন পেতে ব্যবহার করতে পারেন। ব্যবহারকারী অ্যাক্সেস প্রত্যাহার না করা পর্যন্ত রিফ্রেশ টোকেন বৈধ
scope লিঙ্কড অ্যাকাউন্ট সাইন-ইন ব্যবহারের ক্ষেত্রে এই ক্ষেত্রের মান সর্বদা openid-এ সেট করা থাকে
token_type টোকেনের ধরন ফিরে এসেছে। এই সময়ে, এই ক্ষেত্রের মান সবসময় Bearer সেট করা হয়
নমুনা প্রতিক্রিয়া
HTTP/1.1 200 OK
Content-type: application/json; charset=utf-8

{
  "access_token": "Google-access-token",
  "id_token": "Google-ID-token",
  "expires_in": 3599,
  "token_type": "Bearer",
  "scope": "openid",
  "refresh_token": "Google-refresh-token"
}


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

code=Google authorization code
&grant_type=authorization_code
&client_id=Google client id
&client_secret=Google client secret

আইডি টোকেন প্রতিক্রিয়া যাচাই করুন

জেডব্লিউটি দৃser়তা প্রমাণ করুন এবং ডিকোড করুন

আপনি আপনার ভাষার জন্য একটি JWT- ডিকোডিং লাইব্রেরি ব্যবহার করে JWT উক্তির যাচাইকরণ এবং ডিকোড করতে পারেন। টোকেনের স্বাক্ষরটি যাচাই করতে 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
  "email_verified": true,   // true, if Google has verified the email address
  "hd": "example.com",      // If present, the host domain of the user's GSuite email address
                            // If present, a URL to user's profile picture
  "picture": "https://lh3.googleusercontent.com/a-/AOh14GjlTnZKHAeb94A-FmEbwZv7uJD986VOF1mJGb2YYQ",
  "locale": "en_US"         // User's locale, from browser or phone settings
}

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

email , email_verified এবং hd ক্ষেত্রগুলি ব্যবহার করে আপনি নির্ধারণ করতে পারেন যে গুগল হোস্ট করে এবং কোনও ইমেল ঠিকানার জন্য অনুমোদিত কিনা। গুগলের অনুমোদনের ক্ষেত্রে ব্যবহারকারী বর্তমানে বৈধ অ্যাকাউন্টের মালিক হিসাবে পরিচিত এবং আপনি পাসওয়ার্ড বা অন্যান্য চ্যালেঞ্জ পদ্ধতি এড়িয়ে যেতে পারেন। অন্যথায়, লিঙ্কিংয়ের আগে অ্যাকাউন্টটি যাচাই করতে এই পদ্ধতিগুলি ব্যবহার করা যেতে পারে।

গুগল অনুমোদনযোগ্য ক্ষেত্রে:

  • email একটি @gmail.com প্রত্যয় রয়েছে, এটি একটি Gmail অ্যাকাউন্ট।
  • email_verified সত্য এবং hd সেট করা হয়েছে, এটি একটি জি স্যুট অ্যাকাউন্ট।

ব্যবহারকারীরা জিমেইল বা জি স্যুট ব্যবহার না করেই গুগল অ্যাকাউন্টের জন্য নিবন্ধন করতে পারেন। যখন email @gmail.com প্রত্যয় থাকে না এবং hd অনুপস্থিত থাকে তবে গুগল অনুমোদিত নয় এবং পাসওয়ার্ড বা অন্যান্য চ্যালেঞ্জ পদ্ধতি ব্যবহারকারীকে যাচাই করার জন্য প্রস্তাবিত হয়। email_verfied সত্য হতে পারে যেহেতু গুগল অ্যাকাউন্ট তৈরি হওয়ার সময় গুগল প্রাথমিকভাবে ব্যবহারকারীকে যাচাই করেছিল তবে তৃতীয় পক্ষের ইমেল অ্যাকাউন্টের মালিকানা পরিবর্তিত হতে পারে।