Google खाते को लिंक करने की सुविधा की मदद से, Google खाते के मालिक आपकी सेवाओं से फटाफट, आसानी से, और सुरक्षित तरीके से कनेक्ट हो सकते हैं. साथ ही, वे Google के साथ डेटा शेयर कर सकते हैं.
लिंक किए गए खाते से साइन इन करने की सुविधा की मदद से, उन लोगों के लिए One Tap Sign-In with Google की सुविधा चालू कर दी जाती है जिन्होंने पहले से ही आपका Google खाता आपकी सेवा से लिंक किया हुआ है. इससे उपयोगकर्ताओं का अनुभव बेहतर होगा, क्योंकि वे अपना उपयोगकर्ता नाम और पासवर्ड दोबारा डाले बिना, सिर्फ़ एक क्लिक से साइन इन कर सकते हैं. इससे, उपयोगकर्ताओं के आपकी सेवा पर डुप्लीकेट खाते बनाने की संभावना भी कम हो जाती है.
ज़रूरी शर्तें
लिंक किए गए खाते में साइन इन करने की सुविधा लागू करने के लिए, आपको ये ज़रूरी शर्तें पूरी करनी होंगी:
- आपने Google खाते से OAuth लिंक करने की सुविधा लागू की है, जो OAuth 2.0 के ऑथराइज़ेशन कोड के फ़्लो के साथ काम करता है. OAuth लागू करने की प्रक्रिया में, नीचे दिए गए एंडपॉइंट शामिल होने चाहिए:
- अनुमति देने के अनुरोधों को मैनेज करने के लिए, ऑथराइज़ेशन एंडपॉइंट.
- टोकन एंडपॉइंट का इस्तेमाल करें.
- userinfo एंडपॉइंट का इस्तेमाल करें.
- आपके पास Android ऐप्लिकेशन है.
यह कैसे काम करता है
ज़रूरी शर्त : आपकी सेवा में शामिल उपयोगकर्ता ने पहले ही अपने Google खाते को अपने खाते से लिंक किया हो.
- आपने एक टैप में साइन इन फ़्लो के दौरान, लिंक किए गए खाते दिखाने के लिए ऑप्ट-इन किया है.
- उपयोगकर्ता को एक टैप में साइन इन करने का अनुरोध दिखेगा. इसमें उसे अपने लिंक किए गए खाते से आपकी सेवा में साइन इन करने का विकल्प भी दिखेगा.
- अगर कोई उपयोगकर्ता लिंक किए गए खाते का इस्तेमाल जारी रखता है, तो Google आपके टोकन एंडपॉइंट पर एक अनुरोध भेजता है, ताकि ऑथराइज़ेशन कोड सेव किया जा सके. इस अनुरोध में, आपकी सेवा से जारी किया गया उपयोगकर्ता का ऐक्सेस टोकन और Google का ऑथराइज़ेशन कोड शामिल होता है.
- Google के ऑथराइज़ेशन कोड को ऐसे Google आईडी टोकन से बदला जाता है जिसमें उपयोगकर्ता के Google खाते की जानकारी होती है.
- फ़्लो खत्म होने पर, आपके ऐप्लिकेशन को आईडी टोकन भी मिलता है. साथ ही, उपयोगकर्ता को आपके ऐप्लिकेशन में साइन इन करने के लिए सर्वर को मिले आईडी टोकन में, उपयोगकर्ता आइडेंटिफ़ायर से मैच करने के दौरान आपके ऐप्लिकेशन को भी एक आईडी टोकन मिलता है.
अपने Android ऐप्लिकेशन में, लिंक किए गए खाते में साइन इन करने की सुविधा लागू करना
अपने Android ऐप्लिकेशन पर लिंक किए गए खाते में साइन इन करने की सुविधा देने के लिए, Android लागू करने की गाइड में दिए गए निर्देशों का पालन करें.
Google से मिले ऑथराइज़ेशन कोड के अनुरोधों को मैनेज करना
Google आपके टोकन एंडपॉइंट पर एक पोस्ट अनुरोध करता है, ताकि अनुमति वाले कोड को सेव किया जा सके. कोड को उपयोगकर्ता के आईडी टोकन के बदले इस्तेमाल किया जाता है. अनुरोध में उपयोगकर्ता का ऐक्सेस टोकन और Google की ओर से जारी किया गया OAuth2 ऑथराइज़ेशन कोड शामिल है.
ऑथराइज़ेशन कोड को सेव करने से पहले, आपको इस बात की पुष्टि करनी होगी कि आपने 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 पर सेट होनी चाहिए |
आपका टोकन एक्सचेंज एंडपॉइंट, पीओएसटी अनुरोध का जवाब देने के लिए यह तरीका अपनाना चाहिए:
- पुष्टि करें कि
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-पुष्टि: बेयरर" शामिल करें रिस्पॉन्स हेडर में ऑथेंटिक चैलेंज |
पार्टनर ऐक्सेस टोकन अमान्य है. |
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."
}
आईडी टोकन के लिए Exchange का ऑथराइज़ेशन कोड
आपको Google आईडी टोकन के लिए मिले ऑथराइज़ेशन कोड को एक्सचेंज करना होगा. इस कोड में, उपयोगकर्ता के Google खाते की जानकारी होती है.
Google आईडी टोकन के लिए ऑथराइज़ेशन कोड को एक्सचेंज करने के लिए, https://oauth2.googleapis.com/token
एंडपॉइंट को कॉल करें और ये पैरामीटर सेट करें:
अनुरोध फ़ील्ड | |
---|---|
client_id |
ज़रूरी है. एपीआई कंसोल के क्रेडेंशियल पेज से मिला क्लाइंट आईडी. आम तौर पर, यह क्रेडेंशियल में New Actions on Google ऐप्लिकेशन नाम होता है |
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 |
लिंक किए गए खाते में साइन इन करने के इस्तेमाल के उदाहरण के लिए, इस फ़ील्ड की वैल्यू हमेशा 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-डिकोडिंग लाइब्रेरी. इस्तेमाल की जाने वाली चीज़ें Google की सार्वजनिक कुंजियां, इनमें उपलब्ध हैं 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
फ़ील्ड).
email
, email_verified
, और hd
फ़ील्ड का इस्तेमाल करके, यह पता लगाया जा सकता है कि
ईमेल पते को Google होस्ट करता है और आधिकारिक तौर पर उपलब्ध कराता है. ऐसे मामले जहां Google
उस उपयोगकर्ता के पास फ़िलहाल खाते का असली मालिक होने की अनुमति है
और पासवर्ड या अन्य चैलेंज वाले तरीकों को स्किप किया जा सकता है. या फिर, इन तरीकों से
का इस्तेमाल, खाता जोड़ने से पहले उसकी पुष्टि करने के लिए किया जा सकता है.
ऐसे मामले, जिनमें Google आधिकारिक जानकारी देता है:
email
में@gmail.com
सफ़िक्स लगा है. यह Gmail खाता है.email_verified
सही है औरhd
सेट है, यह एक G Suite खाता है.
उपयोगकर्ता, Gmail या G Suite का इस्तेमाल किए बिना Google खातों के लिए रजिस्टर कर सकते हैं. टास्क कब शुरू होगा
email
में @gmail.com
सफ़िक्स नहीं है और hd
मौजूद नहीं है
पुष्टि करने के लिए, भरोसेमंद और पासवर्ड या अन्य चैलेंज वाले तरीकों का इस्तेमाल करने का सुझाव दिया जाता है
उपयोगकर्ता है. email_verified
भी सही हो सकती है, क्योंकि Google ने शुरुआत में
Google खाता बनाए जाने के समय उपयोगकर्ता, हालांकि तीसरे पक्ष का मालिकाना हक
शायद उसके बाद ईमेल खाता बदल गया है.