Google खाते को लिंक करने की सुविधा की मदद से, Google खाते के उपयोगकर्ता आपकी सेवाओं से तुरंत, आसानी से, और सुरक्षित तरीके से कनेक्ट कर सकते हैं. साथ ही, Google के साथ डेटा शेयर कर सकते हैं.
लिंक किए गए खाते से साइन इन करने की सुविधा, उन उपयोगकर्ताओं के लिए Google से एक टैप में साइन इन करने की सुविधा चालू करती है जिनका Google खाता पहले से ही आपकी सेवा से लिंक है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलता है, क्योंकि वे एक क्लिक से साइन इन कर सकते हैं. इसके लिए, उन्हें अपना उपयोगकर्ता नाम और पासवर्ड दोबारा डालने की ज़रूरत नहीं पड़ती. इससे, उपयोगकर्ताओं के आपकी सेवा पर डुप्लीकेट खाते बनाने की संभावना भी कम हो जाती है.
ज़रूरी शर्तें
लिंक किए गए खाते से साइन इन करने की सुविधा लागू करने के लिए, आपको ये ज़रूरी शर्तें पूरी करनी होंगी:
- आपने Google खाते को OAuth लिंक करने की सुविधा लागू की हो, जो OAuth 2.0 के ऑथराइज़ेशन कोड फ़्लो के साथ काम करती हो. OAuth लागू करने के लिए, इन एंडपॉइंट का इस्तेमाल करना ज़रूरी है:
- अनुमति के अनुरोधों को मैनेज करने के लिए ऑथराइज़ेशन एंडपॉइंट.
- ऐक्सेस और रीफ़्रेश टोकन के अनुरोध को मैनेज करने के लिए टोकन एंडपॉइंट.
- userinfo एंडपॉइंट, लिंक किए गए उपयोगकर्ता के खाते की बुनियादी जानकारी पाने के लिए. यह जानकारी, लिंक किए गए खाते में साइन इन करने की प्रोसेस के दौरान उपयोगकर्ता को दिखती है.
- आपके पास Android ऐप्लिकेशन हो.
यह कैसे काम करता है
ज़रूरी शर्त : उपयोगकर्ता ने पहले ही, अपनी सेवा पर अपने खाते को Google खाते से लिंक किया हो.
- एक टैप से साइन इन करने के दौरान, लिंक किए गए खाते दिखाने के लिए ऑप्ट-इन किया जाता है.
- उपयोगकर्ता को 'एक टैप से साइन इन करें' प्रॉम्प्ट दिखता है. इसमें, लिंक किए गए खाते से आपकी सेवा में साइन इन करने का विकल्प होता है.
- अगर उपयोगकर्ता लिंक किए गए खाते का इस्तेमाल जारी रखने का विकल्प चुनता है, तो Google आपके टोकन एंडपॉइंट को ऑथराइज़ेशन कोड सेव करने का अनुरोध भेजता है. अनुरोध में, आपकी सेवा से जारी किया गया उपयोगकर्ता का ऐक्सेस टोकन और Google का ऑथराइज़ेशन कोड शामिल होता है.
- Google अनुमति कोड को Google आईडी टोकन से बदला जाता है. इस टोकन में, उपयोगकर्ता के Google खाते की जानकारी होती है.
- फ़्लो पूरा होने पर, आपके ऐप्लिकेशन को भी एक आईडी टोकन मिलता है. इसके बाद, उपयोगकर्ता को आपके ऐप्लिकेशन में साइन इन कराने के लिए, इस आईडी टोकन को उस आईडी टोकन में मौजूद यूज़र आइडेंटिफ़ायर से मैच किया जाता है जो आपके सर्वर को मिला था.
![लिंक किए गए खाते में साइन इन करें.](https://developer.android.com/static/identity/legacy/one-tap/images/linked-account-signin.png?hl=hi)
अपने 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 पर सेट करना ज़रूरी है |
आपका टोकन एक्सचेंज एंडपॉइंट, पोस्ट अनुरोध का जवाब देना चाहिए. इसके लिए, उसे ये काम करने होंगे:
- पुष्टि करें कि
access_token
को Google नेclient_id
की पहचान से अनुमति दी थी. - अगर अनुरोध मान्य है और पुष्टि करने वाले कोड को Google आईडी टोकन के लिए बदल दिया गया है, तो एचटीटीपी 200 (ठीक है) के साथ जवाब दें. अगर अनुरोध अमान्य है, तो एचटीटीपी गड़बड़ी कोड के साथ जवाब दें.
एचटीटीपी रिस्पॉन्स
काम हो गया
एचटीटीपी स्टेटस कोड 200 OK दिखाना
सफलता का रिस्पॉन्स का सैंपल
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-Authentication: Bearer" चैलेंज शामिल करें |
पार्टनर का ऐक्सेस टोकन अमान्य है. |
403 | {"error": "insufficient_permission"}
रिस्पॉन्स हेडर में "WWW-Authentication: Bearer" पुष्टि करने का चैलेंज शामिल करें |
पार्टनर ऐक्सेस टोकन में, रिसिप्रोकल 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 आईडी टोकन से बदलना होगा. इस टोकन में, उपयोगकर्ता के Google खाते की जानकारी होती है.
अनुमति कोड को Google आईडी टोकन से बदलने के लिए, https://oauth2.googleapis.com/token
एंडपॉइंट को कॉल करें और ये पैरामीटर सेट करें:
अनुरोध फ़ील्ड | |
---|---|
client_id |
ज़रूरी है यह क्लाइंट आईडी, API Console के क्रेडेंशियल पेज से लिया गया हो. आम तौर पर, यह 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