लिंक किए गए खाते में साइन इन करना

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

Google खाता लिंक करने की सुविधा का इस्तेमाल करके, Google खाता इस्तेमाल करने वाले लोग आपकी सेवाओं से जल्दी, आसानी से, और सुरक्षित तरीके से कनेक्ट हो सकते हैं. साथ ही, अपने डेटा को Google के साथ शेयर कर सकते हैं.

लिंक किए गए खाते में साइन इन करने पर, एक टैप से Google के ज़रिए साइन इन करने की सुविधा उन उपयोगकर्ताओं के लिए चालू हो जाती है जिन्होंने पहले से अपना Google खाता आपकी सेवा से जोड़ा हुआ है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है, क्योंकि वे अपना उपयोगकर्ता नाम और पासवर्ड फिर से डाले बिना, एक ही क्लिक से साइन इन कर सकते हैं. इससे उपयोगकर्ताओं के लिए, आपकी सेवा पर डुप्लीकेट खाते बनाने की संभावना भी कम हो जाती है.

ज़रूरी शर्तें

लिंक किए गए खाते में साइन इन करने की सुविधा लागू करने के लिए, आपको नीचे दी गई ज़रूरी शर्तें पूरी करनी होगी:

यह कैसे काम करता है

ज़रूरी शर्त : उपयोगकर्ता ने पहले ही आपके खाते के साथ अपना Google खाता जोड़ा है.

  1. आप 'एक टैप से साइन इन' फ़्लो के दौरान लिंक किए गए खाते दिखाने के लिए ऑप्ट-इन करते हैं.
  2. उपयोगकर्ता को 'एक टैप में साइन इन करें' सूचना दिखाई जाती है. इसमें उपयोगकर्ता के लिंक किए गए खाते से, आपकी सेवा में साइन इन करने का विकल्प भी होता है.
  3. अगर उपयोगकर्ता लिंक किए गए खाते के साथ आगे बढ़ना चाहता है, तो Google आपके टोकन एंडपॉइंट पर एक अनुरोध भेजता है. इस अनुरोध में, ऑथराइज़ेशन कोड सेव किया जाता है. अनुरोध में उपयोगकर्ता और #39; का ऐक्सेस टोकन होता है. यह ऐक्सेस सेवा और Google के ऑथराइज़ेशन कोड से जारी किया जाता है.
  4. आप Google आईडी टोकन का लेन-देन Google आईडी टोकन के साथ करते हैं, जिसमें उपयोगकर्ता के Google खाते के बारे में जानकारी होती है.
  5. फ़्लो के पूरा होने पर, आपके ऐप्लिकेशन को एक आईडी टोकन भी मिलता है. साथ ही, उपयोगकर्ता के आपके ऐप्लिकेशन में साइन इन करने के लिए, सर्वर के ज़रिए मिले आईडी टोकन से उपयोगकर्ता आईडी का मिलान किया जाता है.
लिंक किए गए खाते में साइन इन.
पहली इमेज. लिंक किए गए खाते का साइन इन फ़्लो. अगर उपयोगकर्ता के डिवाइस पर कई खाते से साइन इन किया गया है, तो उपयोगकर्ता खाता चुनने वाले को देख सकता है. अगर वह लिंक किया गया खाता चुनता है, तो उसे सिर्फ़ 'लिंक किए गए खाते के साइन इन व्यू' पर ले जाया जाता है.

अपने Android ऐप्लिकेशन में लिंक किए गए खाते में प्रवेश करें

अपने Android ऐप्लिकेशन पर लिंक किए गए खाते में साइन इन करने के लिए, Android लागू करने की गाइड में दिए गए निर्देशों का पालन करें.

Google से मिले ऑथराइज़ेशन कोड के अनुरोध मैनेज करना

उपयोगकर्ता के आईडी टोकन का लेन-देन करने के लिए, ऑथराइज़ेशन कोड सेव करने के लिए, Google आपके टोकन एंडपॉइंट पर पोस्ट करता है. अनुरोध में उपयोगकर्ता का ऐक्सेस टोकन और Google ने OAuth2 ऑथराइज़ेशन कोड जारी किया है.

ऑथराइज़ेशन कोड सेव करने से पहले, आपको इस बात की पुष्टि करनी होगी कि आपने Google को ऐक्सेस टोकन दिया है. Google इस टोकन की पहचान, client_id से करता है.

एचटीटीपी अनुरोध

सैंपल अनुरोध

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 की पहचान की थी.
  • अगर अनुरोध मान्य है और पुष्टि करने वाला कोड Google आईडी के टोकन के लिए बदल गया है या अनुरोध अमान्य है, तो एचटीटीपी 200 (ठीक है) रिस्पॉन्स के साथ जवाब दें.

एचटीटीपी रिस्पॉन्स

कार्रवाई सफल रही

एचटीटीपी स्टेटस कोड 200 ठीक करें

सफलता के नमूने का नमूना
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{}

गड़बड़ियां

अमान्य एचटीटीपी अनुरोध होने पर, इनमें से किसी एक एचटीटीपी गड़बड़ी कोड के साथ जवाब दें:

एचटीटीपी स्टेटस कोड गाड़ी ब्यौरा
400 {"error": "invalid_request"} अनुरोध में पैरामीटर मौजूद नहीं है, इसलिए सर्वर अनुरोध को आगे नहीं बढ़ा सकता. अगर अनुरोध में ऐसा पैरामीटर शामिल है जो काम नहीं करता या पैरामीटर को दोहराता है, तो भी हो सकता है
401 {"error": "invalid_request"} क्लाइंट की पुष्टि नहीं हो सकी, जैसे कि अनुरोध में अमान्य क्लाइंट आईडी या सीक्रेट शामिल है
401 {"error": "invalid_token"}

शामिल करें "WWW-पुष्टि करें: Bearer&कोटेशन; रिस्पॉन्स हेडर में पुष्टि करने का चैलेंज

पार्टनर ऐक्सेस टोकन अमान्य है.
403 {"error": "insufficient_permission"}

शामिल करें "WWW-पुष्टि करें: Bearer&कोटेशन; रिस्पॉन्स हेडर में पुष्टि करने का चैलेंज

पार्टनर के ऐक्सेस टोकन में#
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 आईडी टोकन के लिए मिले ऑथराइज़ेशन कोड को बदलना होगा. इसमें, उपयोगकर्ता के Google खाते के बारे में जानकारी होती है.

Google आईडी टोकन के लिए ऑथराइज़ेशन कोड को बदलने के लिए, https://oauth2.googleapis.com/token एंडपॉइंट को कॉल करें और ये पैरामीटर सेट करें:

फ़ील्ड के लिए अनुरोध करें
client_id ज़रूरी है एपीआई कंसोल के क्रेडेंशियल पेज से मिला क्लाइंट आईडी. यह आम तौर पर, Google app पर नई कार्रवाइयां नाम वाला क्रेडेंशियल होगा
client_secret ज़रूरी है एपीआई कंसोल के क्रेडेंशियल पेज से मिला क्लाइंट सीक्रेट
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 लिंक किए गए खाते के साइन इन इस्तेमाल के उदाहरण के लिए, इस फ़ील्ड की वैल्यू हमेशा ओपन आईडी पर सेट रहती है
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

आईडी टोकन का जवाब दें

मान्य करें और JWT अभिकथन को डिकोड करें

आप अपनी भाषा के लिए JWT- डिकोडिंग लाइब्रेरी का उपयोग करके JWT दावे को मान्य और डिकोड कर सकते हैं । टोकन के हस्ताक्षर को सत्यापित करने के लिए, JWK या PEM प्रारूपों में उपलब्ध Google की सार्वजनिक कुंजियों का उपयोग करें।

जब डिकोड किया जाता है, तो 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 फ़ील्ड) आपका असाइन किया गया क्लाइंट ID है, और टोकन की समय सीमा समाप्त नहीं हुई है ( exp मैदान)।

email , email_verified और hd फ़ील्ड का उपयोग करके आप यह निर्धारित कर सकते हैं कि Google होस्ट ईमेल पते के लिए आधिकारिक है या नहीं। उन मामलों में जहां Google आधिकारिक है, उपयोगकर्ता को वर्तमान में वैध खाता स्वामी के रूप में जाना जाता है और आप पासवर्ड या अन्य चुनौतियों के तरीकों को छोड़ सकते हैं। अन्यथा, इन विधियों का उपयोग लिंक करने से पहले खाते को सत्यापित करने के लिए किया जा सकता है।

ऐसे मामले जहां Google आधिकारिक है:

  • email में @gmail.com प्रत्यय है, यह एक जीमेल खाता है।
  • email_verified सत्य है और hd सेट है, यह एक G Suite खाता है।

उपयोगकर्ता जीमेल या जी सूट का उपयोग किए बिना Google खातों के लिए पंजीकरण कर सकते हैं। जब email @gmail.com प्रत्यय नहीं होता है और hd अनुपस्थित होता है तो Google आधिकारिक नहीं होता है और उपयोगकर्ता को सत्यापित करने के लिए पासवर्ड या अन्य चुनौती विधियों की सिफारिश की जाती है। email_verfied भी सही हो सकता है क्योंकि Google ने उपयोगकर्ता को शुरू में सत्यापित किया था जब Google खाता बनाया गया था, हालांकि तृतीय पक्ष ईमेल खाते का स्वामित्व परिवर्तित होने के बाद हो सकता है।