चेतावनी: यह डेटा Google उपयोगकर्ता डेटा नीति के तहत प्रदान किया गया है। कृपया नीति की समीक्षा करें और उसका पालन करें। ऐसा करने में विफलता के परिणामस्वरूप परियोजना निलंबन या खाता निलंबन हो सकता है।

लिंक किया गया खाता साइन-इन

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

लिंक्ड खाता प्रवेश को सक्षम बनाता है एक नल गूगल के साथ साइन-इन उपयोगकर्ताओं है कि पहले से ही अपने Google खाते आपकी सेवा से जुड़ा हुआ है के लिए। यह उपयोगकर्ताओं के लिए अनुभव को बेहतर बनाता है क्योंकि वे अपना उपयोगकर्ता नाम और पासवर्ड दोबारा दर्ज किए बिना एक क्लिक से साइन इन कर सकते हैं। यह उपयोगकर्ताओं द्वारा आपकी सेवा पर डुप्लीकेट खाते बनाने की संभावना को भी कम करता है।

आवश्यकताएं

लिंक्ड अकाउंट साइन-इन को लागू करने के लिए, आपको निम्नलिखित आवश्यकताओं को पूरा करना होगा:

  • आप एक है Google खाते OAuth लिंकिंग कार्यान्वयन OAuth 2.0 प्राधिकरण कोड प्रवाह में सहायता करती। आपके OAuth कार्यान्वयन में निम्नलिखित अंतिम बिंदु शामिल होने चाहिए:
    • प्राधिकरण endpoint संभाल प्राधिकरण अनुरोध करने के लिए।
    • टोकन समाप्ति बिंदु का उपयोग और ताज़ा टोकन हैंडल अनुरोध करने के लिए।
    • endpoint UserInfo लिंक किया गया प्रयोक्ता जो लिंक्ड खाते के प्रवेश की प्रक्रिया के दौरान उपयोगकर्ता के लिए प्रदर्शित किया जाता है के बारे में बुनियादी खाते की जानकारी प्राप्त करने के लिए।
  • आपके पास एक Android ऐप है।

यह काम किस प्रकार करता है

पूर्वापेक्षाएँ: उपयोगकर्ता ने पहले अपने Google खाते को आपकी सेवा पर अपने खाते से लिंक किया है।

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

अपने Android ऐप में लिंक्ड अकाउंट साइन-इन लागू करें

अपने Android एप्लिकेशन को लिंक किया गया खाता साइन-इन का समर्थन करने के लिए, के निर्देशों का पालन एंड्रॉयड क्रियान्वयन मार्गदर्शिका

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 आवश्यक गूगल OAuth2 प्राधिकरण कोड
client_id आवश्यक ग्राहक आईडी है कि आप Google को जारी
client_secret आवश्यक ग्राहक रहस्य नहीं है कि आप Google को जारी
access_token आवश्यक पहुँच टोकन है कि आप Google को जारी। आप इसका उपयोग उपयोगकर्ता का संदर्भ प्राप्त करने के लिए करेंगे
grant_type आवश्यक मूल्य के लिए सेट किया जाना चाहिए urn:ietf:params:oauth:grant-type:reciprocal

आपके टोकन एक्सचेंज एंडपॉइंट को निम्नलिखित कार्य करके POST अनुरोध का जवाब देना चाहिए:

  • सत्यापित करें access_token गूगल के द्वारा की पहचान प्रदान की गई थी client_id
  • यदि अनुरोध मान्य है और Google आईडी टोकन के लिए प्रमाणीकरण कोड का सफलतापूर्वक आदान-प्रदान किया जाता है, या अनुरोध अमान्य होने पर HTTP त्रुटि कोड के साथ HTTP 200 (ओके) प्रतिक्रिया के साथ प्रतिक्रिया दें।

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 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 खाते के बारे में जानकारी हो।

एक गूगल आईडी टोकन के लिए एक प्राधिकरण कोड का आदान-प्रदान करने के लिए, फोन https://oauth2.googleapis.com/token endpoint और निम्न पैरामीटर सेट करें:

अनुरोध फ़ील्ड
client_id ग्राहक आईडी API कंसोल से प्राप्त आवश्यक साख पेज । यह आमतौर पर गूगल एप पर नाम नई क्रियाओं से क्रेडेंशियल हो जाएगा
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

आईडी टोकन प्रतिक्रिया की पुष्टि करें

मान्य करें और 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 खाता बनाया गया था, हालांकि तृतीय पक्ष ईमेल खाते का स्वामित्व परिवर्तित होने के बाद हो सकता है।