OAuth 2.0 सर्वर लागू करना

हर Cloud-to-cloud इंटिग्रेशन में, उपयोगकर्ताओं की पुष्टि करने के लिए कोई तरीका शामिल होना चाहिए.

पुष्टि करने की सुविधा की मदद से, उपयोगकर्ताओं के Google खातों को अपने पुष्टि करने वाले सिस्टम में मौजूद उपयोगकर्ता खातों से लिंक किया जा सकता है. इससे, स्मार्ट होम इंटेंट मिलने पर, उपयोगकर्ताओं की पहचान की जा सकती है. Google स्मार्ट होम, सिर्फ़ ऑथराइज़ेशन कोड फ़्लो के साथ OAuth को सपोर्ट करता है.

इस पेज पर, OAuth 2.0 सर्वर सेट अप करने का तरीका बताया गया है, ताकि यह Cloud-to-cloud इंटिग्रेशन के साथ काम कर सके.

OAuth की मदद से Google खाते को किसी दूसरे खाते से लिंक करने की सुविधा

In the authorization code flow, you need two endpoints:

  • The authorization endpoint, which presents the sign-in UI to your users that aren't already signed in. The authorization endpoint also creates a short-lived authorization code to record users' consent to the requested access.

  • The token exchange endpoint, which is responsible for two types of exchanges:

    1. Exchanges an authorization code for a long-lived refresh token and a short-lived access token. This exchange happens when the user goes through the account linking flow.
    2. Exchanges a long-lived refresh token for a short-lived access token. This exchange happens when Google needs a new access token because the one it had expired.

Design guidelines

This section describes the design requirements and recommendations for the user screen that you host for OAuth linking flows. After it's called by Google's app, your platform displays a sign in to Google page and account linking consent screen to the user. The user is directed back to Google's app after giving their consent to link accounts.

This figure shows the steps for a user to link their Google account
            to your authentication system. The first screenshot shows
            user-initiated linking from your platform. The second image shows
            user sign-in to Google, while the third shows the user consent and
            confirmation for linking their Google account with your app. The
            final screenshot shows a successfully linked user account in the
            Google app.
Figure 1. Account linking user sign in to Google and consent screens.

Requirements

  1. You must communicate that the user’s account will be linked to Google, not a specific Google product like Google Home or Google Assistant.
  2. You must have a Google authorization statement such as "By signing in, you are authorizing Google to control your devices." See the Google Device Control Authorization section of the Google Home Developer Policies.
  3. You must open the Web OAuth linking page and ensure users have a clear method for signing in to their Google Account, such as fields for their username and password. Don't use the Google Sign-In (GSI) method that enables users to link without being taken to the Web OAuth Linking page. It is a violation of Google policy.
  4. You must include at least one of the following items in the OAuth linking page to indicate the integration to which the user is linking:
    • Company logo
    • Company name
    • Integration name
    • App icon

Recommendations

We recommend that you do the following:

  1. Display Google's Privacy Policy. Include a link to Google’s Privacy Policy on the consent screen.

  2. Data to be shared. Use clear and concise language to tell the user what data of theirs Google requires and why, and what usage or interaction data may be shared with you by Google.

  3. Clear call-to-action. State a clear call-to-action on your consent screen, such as “Agree and link.” This is because users need to understand what data they're required to share with Google to link their accounts.

  4. Ability to cancel. Provide a way for users to go back or cancel, if they choose not to link.

  5. Clear sign-in process. Ensure that users have a clear method for signing in to their Google Account, such as fields for their username and password or Sign in with Google.

  6. Ability to unlink. Offer a mechanism for users to unlink, such as a URL to their account settings on your platform. Alternatively, you can include a link to Google Account where users can manage their linked account. If a user unlinks from your integration, use agentUsers.delete to notify Google of the change.

  7. Ability to change user account. Suggest a method for users to switch their account(s). This is especially beneficial if users tend to have multiple accounts.

    • If a user must close the consent screen to switch accounts, send a recoverable error to Google so the user can sign in to the desired account with OAuth linking.
  8. Include your logo. Display your company logo on the consent screen. Use your style guidelines to place your logo. If you wish to also display Google's logo, see Logos and trademarks.

ऑथराइज़ेशन कोड फ़्लो

ऑथराइज़ेशन कोड के फ़्लो को लागू करने के लिए, OAuth 2.0 सर्वर में दो एंडपॉइंट होते हैं. आपकी सेवा, एचटीटीपीएस की मदद से इन्हें उपलब्ध कराती है. पहला एंडपॉइंट, ऑथराइज़ेशन एंडपॉइंट होता है. यह डेटा का ऐक्सेस करने के लिए, उपयोगकर्ताओं से सहमति पाने या सहमति ढूंढने का काम करता है. ऑथराइज़ेशन एंडपॉइंट, उन उपयोगकर्ताओं को साइन-इन यूज़र इंटरफ़ेस (यूआई) दिखाता है जिन्होंने पहले से साइन इन नहीं किया है. साथ ही, यह अनुरोध किए गए ऐक्सेस के लिए सहमति रिकॉर्ड करता है. दूसरा एंडपॉइंट, टोकन एक्सचेंज एंडपॉइंट होता है. इसका इस्तेमाल, एनक्रिप्ट किए गए स्ट्रिंग पाने के लिए किया जाता है. इन्हें टोकन कहा जाता है. ये टोकन, किसी उपयोगकर्ता को आपकी सेवा ऐक्सेस करने की अनुमति देते हैं.

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

Google की ओर से शुरू किए गए OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो सेशन का फ़्लो इस तरह होता है:

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

अनुमति के अनुरोध मैनेज करना

OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो का इस्तेमाल करके, खाता लिंक करने के लिए, Google उपयोगकर्ता को आपके ऑथराइज़ेशन एंडपॉइंट पर भेजता है. साथ ही, एक अनुरोध भी भेजता है. इस अनुरोध में ये पैरामीटर शामिल होते हैं:

ऑथराइज़ेशन एंडपॉइंट के पैरामीटर
client_id वह क्लाइंट आईडी जो आपने Google को असाइन किया है.
redirect_uri वह यूआरएल जिस पर आपने इस अनुरोध का जवाब भेजा है.
state हिसाब-किताब की ऐसी वैल्यू जिसे रीडायरेक्ट यूआरआई में, बिना बदलाव किए Google को वापस भेजा जाता है.
scope ज़रूरी नहीं: स्कोप स्ट्रिंग का ऐसा सेट जिसमें स्पेस के ज़रिए अलग-अलग स्ट्रिंग शामिल होती हैं. इससे यह पता चलता है कि Google, किस डेटा के लिए अनुमति का अनुरोध कर रहा है.
response_type जवाब में किस तरह की वैल्यू दिखानी है. OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो के लिए, रिस्पॉन्स टाइप हमेशा code होता है.

उदाहरण के लिए, अगर आपका ऑथराइज़ेशन एंडपॉइंट https://myservice.example.com/auth पर उपलब्ध है, तो अनुरोध इस तरह दिख सकता है:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&scope=REQUESTED_SCOPES&response_type=code

साइन-इन के अनुरोधों को मैनेज करने के लिए, अपने ऑथराइज़ेशन एंडपॉइंट को कॉन्फ़िगर करने के लिए, यह तरीका अपनाएं:

  1. पुष्टि करें कि client_id, उस क्लाइंट आईडी से मेल खाता हो जो आपने Google को असाइन किया है. साथ ही, redirect_uri, उस रीडायरेक्ट यूआरएल से मेल खाता हो जो Google ने आपकी सेवा के लिए दिया है. इन जांचों से, अनचाहे या गलत तरीके से कॉन्फ़िगर किए गए क्लाइंट ऐप्लिकेशन को ऐक्सेस की अनुमति देने से बचा जा सकता है. अगर OAuth 2.0 के एक से ज़्यादा फ़्लो काम करते हैं, तो यह भी पुष्टि करें कि response_type code हो.
  2. देखें कि उपयोगकर्ता ने आपकी सेवा में साइन इन किया है या नहीं. अगर उपयोगकर्ता ने साइन इन नहीं किया है, तो अपनी सेवा के साइन-इन या साइन-अप का फ़्लो पूरा करें.
  3. Google के लिए एक ऑथराइज़ेशन कोड जनरेट करें, ताकि वह आपके एपीआई को ऐक्सेस कर सके. ऑथराइज़ेशन कोड, कोई भी स्ट्रिंग वैल्यू हो सकती है. हालांकि, यह उपयोगकर्ता, उस क्लाइंट, जिसके लिए टोकन है, और कोड की समयसीमा खत्म होने के समय की खास तौर पर जानकारी देता हो. साथ ही, इसका अनुमान नहीं लगाया जा सकता हो. आम तौर पर, ऑथराइज़ेशन कोड जारी करने के करीब 10 मिनट बाद, उनकी समयसीमा खत्म हो जाती है.
  4. पुष्टि करें कि redirect_uri पैरामीटर से तय किया गया यूआरएल, इस फ़ॉर्मैट में हो:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  5. उपयोगकर्ता के ब्राउज़र को redirect_uri पैरामीटर से तय किए गए यूआरएल पर रीडायरेक्ट करें. रीडायरेक्ट करते समय, code और state पैरामीटर जोड़कर, अभी जनरेट किया गया ऑथराइज़ेशन कोड और ओरिजनल, बिना बदलाव वाली स्टेट वैल्यू शामिल करें. यहां, नतीजे के तौर पर मिलने वाले यूआरएल का एक उदाहरण दिया गया है:
    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?code=AUTHORIZATION_CODE&state=STATE_STRING

टोकन एक्सचेंज के अनुरोध मैनेज करना

आपकी सेवा का टोकन एक्सचेंज एंडपॉइंट, दो तरह के टोकन एक्सचेंज के लिए ज़िम्मेदार होता है:

  • ऐक्सेस टोकन और रीफ़्रेश टोकन के लिए, ऑथराइज़ेशन कोड एक्सचेंज करना
  • ऐक्सेस टोकन के लिए, रीफ़्रेश टोकन एक्सचेंज करना

टोकन एक्सचेंज के अनुरोधों में ये पैरामीटर शामिल होते हैं:

टोकन एक्सचेंज एंडपॉइंट के पैरामीटर
client_id एक स्ट्रिंग जिससे यह पता चलता है कि अनुरोध Google से आया है. इस स्ट्रिंग को आपके सिस्टम में, Google के यूनीक आइडेंटिफ़ायर के तौर पर रजिस्टर किया जाना चाहिए.
client_secret एक सीक्रेट स्ट्रिंग जिसे आपने अपनी सेवा के लिए Google के साथ रजिस्टर किया है.
grant_type एक्सचेंज किए जा रहे टोकन का टाइप. यह या तो authorization_code या refresh_token है.
code जब grant_type=authorization_code होता है, तो यह पैरामीटर वह कोड होता है जो Google को आपके साइन-इन या टोकन एक्सचेंज एंडपॉइंट से मिला है.
redirect_uri जब grant_type=authorization_code होता है, तो यह पैरामीटर वह यूआरएल होता है जिसका इस्तेमाल, अनुमति के शुरुआती अनुरोध में किया गया था.
refresh_token जब grant_type=refresh_token होता है, तो यह पैरामीटर वह रीफ़्रेश टोकन होता है जो Google को आपके टोकन एक्सचेंज एंडपॉइंट से मिला है.

कॉन्फ़िगर करना कि Google, आपके सर्वर को क्रेडेंशियल कैसे भेजता है

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

डिफ़ॉल्ट रूप से, Google क्रेडेंशियल को अनुरोध के मुख्य हिस्से में भेजता है. अगर आपके ऑथराइज़ेशन सर्वर को क्लाइंट क्रेडेंशियल, अनुरोध के हेडर में चाहिए, तो आपको अपने Cloud-to-cloud इंटिग्रेशन को इसके मुताबिक कॉन्फ़िगर करना होगा:

Developer Console पर जाएं

  1. प्रोजेक्ट की सूची में, उस प्रोजेक्ट के बगल में मौजूद खोलें पर क्लिक करें जिसके साथ आपको काम करना है.

  2. क्लाउड-टू-क्लाउड में जाकर, डेवलप करें को चुनें.

  3. अपने इंटिग्रेशन के बगल में मौजूद खोलें पर क्लिक करें.

  4. नीचे स्क्रोल करके, अनुमतियां (ज़रूरी नहीं) सेक्शन पर जाएं और Google को क्लाइंट आईडी और सीक्रेट, एचटीटीपी बेसिक ऑथ हेडर के ज़रिए ट्रांसमिट करने की अनुमति दें चेकबॉक्स को चुनें.

  5. अपने बदलावों को सेव करने के लिए, सेव करें पर क्लिक करें.

ऐक्सेस टोकन और रीफ़्रेश टोकन के लिए, ऑथराइज़ेशन कोड एक्सचेंज करना

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

इन अनुरोधों के लिए, grant_type की वैल्यू authorization_code होती है. साथ ही, code की वैल्यू, उस ऑथराइज़ेशन कोड की वैल्यू होती है जो आपने पहले Google को दिया था . यहां, ऐक्सेस टोकन और रीफ़्रेश टोकन के लिए, ऑथराइज़ेशन कोड एक्सचेंज करने के अनुरोध का एक उदाहरण दिया गया है:

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

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI

ऐक्सेस टोकन और रीफ़्रेश टोकन के लिए, ऑथराइज़ेशन कोड एक्सचेंज करने के लिए, आपका टोकन एक्सचेंज एंडपॉइंट, POST अनुरोधों का जवाब इन चरणों को पूरा करके देता है:

  1. पुष्टि करें कि client_id से यह पता चलता हो कि अनुरोध, अनुमति वाले किसी सोर्स से आया है. साथ ही, client_secret, अनुमानित वैल्यू से मेल खाता हो.
  2. पुष्टि करें कि ऑथराइज़ेशन कोड मान्य हो और उसकी समयसीमा खत्म न हुई हो. साथ ही, अनुरोध में तय किया गया क्लाइंट आईडी, उस क्लाइंट आईडी से मेल खाता हो जो ऑथराइज़ेशन कोड से जुड़ा है.
  3. पुष्टि करें कि redirect_uri पैरामीटर से तय किया गया यूआरएल, अनुमति के शुरुआती अनुरोध में इस्तेमाल की गई वैल्यू के जैसा हो.
  4. अगर ऊपर बताई गई सभी शर्तों की पुष्टि नहीं की जा सकती, तो मुख्य हिस्से के तौर पर {"error": "invalid_grant"} के साथ, एचटीटीपी 400 अमान्य अनुरोध की गड़बड़ी दिखाएं.
  5. इसके अलावा, रीफ़्रेश टोकन और ऐक्सेस टोकन जनरेट करने के लिए, ऑथराइज़ेशन कोड से मिले उपयोगकर्ता आईडी का इस्तेमाल करें. ये टोकन, कोई भी स्ट्रिंग वैल्यू हो सकते हैं. हालांकि, ये उपयोगकर्ता और उस क्लाइंट, जिसके लिए टोकन है, की खास तौर पर जानकारी देते हों. साथ ही, इनका अनुमान नहीं लगाया जा सकता हो. ऐक्सेस टोकन के लिए, टोकन की समयसीमा खत्म होने का समय भी रिकॉर्ड करें. आम तौर पर, टोकन जारी करने के एक घंटे बाद, इसकी समयसीमा खत्म हो जाती है. रीफ़्रेश टोकन की समयसीमा खत्म नहीं होती.
  6. एचटीटीपीएस रिस्पॉन्स के मुख्य हिस्से में, यह JSON ऑब्जेक्ट लौटाएं:
    {
    "token_type": "Bearer",
    "access_token": "ACCESS_TOKEN",
    "refresh_token": "REFRESH_TOKEN",
    "expires_in": SECONDS_TO_EXPIRATION
    }

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

ऐक्सेस टोकन के लिए, रीफ़्रेश टोकन एक्सचेंज करना

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

इन अनुरोधों के लिए, grant_type की वैल्यू refresh_token होती है. साथ ही, refresh_token की वैल्यू, उस रीफ़्रेश टोकन की वैल्यू होती है जो आपने पहले Google को दिया था. यहां, ऐक्सेस टोकन के लिए, रीफ़्रेश टोकन एक्सचेंज करने के अनुरोध का एक उदाहरण दिया गया है:

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

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

ऐक्सेस टोकन के लिए, रीफ़्रेश टोकन एक्सचेंज करने के लिए, आपका टोकन एक्सचेंज एंडपॉइंट, POST अनुरोधों का जवाब इन चरणों को पूरा करके देता है:

  1. पुष्टि करें कि client_id से यह पता चलता हो कि अनुरोध Google से आया है. साथ ही, client_secret, अनुमानित वैल्यू से मेल खाता हो.
  2. पुष्टि करें कि रीफ़्रेश टोकन मान्य हो. साथ ही, अनुरोध में तय किया गया क्लाइंट आईडी, उस क्लाइंट आईडी से मेल खाता हो जो रीफ़्रेश टोकन से जुड़ा है.
  3. अगर ऊपर बताई गई सभी शर्तों की पुष्टि नहीं की जा सकती, तो मुख्य हिस्से के तौर पर {"error": "invalid_grant"} के साथ, एचटीटीपी 400 अमान्य अनुरोध की गड़बड़ी दिखाएं.
  4. इसके अलावा, ऐक्सेस टोकन जनरेट करने के लिए, रीफ़्रेश टोकन से मिले उपयोगकर्ता आईडी का इस्तेमाल करें. ये टोकन, कोई भी स्ट्रिंग वैल्यू हो सकते हैं. हालांकि, ये उपयोगकर्ता और उस क्लाइंट, जिसके लिए टोकन है, की खास तौर पर जानकारी देते हों. साथ ही, इनका अनुमान नहीं लगाया जा सकता हो . ऐक्सेस टोकन के लिए, टोकन की समयसीमा खत्म होने का समय भी रिकॉर्ड करें. आम तौर पर, टोकन जारी करने के एक घंटे बाद, इसकी समयसीमा खत्म हो जाती है.
  5. एचटीटीपीएस रिस्पॉन्स के मुख्य हिस्से में, यह JSON ऑब्जेक्ट लौटाएं:
    {
    "token_type": "Bearer",
    "access_token": "ACCESS_TOKEN",
    "expires_in": SECONDS_TO_EXPIRATION
    }

उपयोगकर्ता की जानकारी के अनुरोधों को मैनेज करना

userinfo एंडपॉइंट, OAuth 2.0 से सुरक्षित किया गया एक ऐसा संसाधन है जो लिंक किए गए उपयोगकर्ता के बारे में दावे दिखाता है. नीचे दिए गए इस्तेमाल के उदाहरणों को छोड़कर, userinfo एंडपॉइंट को लागू और होस्ट करना ज़रूरी नहीं है:

आपके टोकन एंडपॉइंट से ऐक्सेस टोकन पाने के बाद, Google आपके userinfo एंडपॉइंट पर एक अनुरोध भेजता है, ताकि लिंक किए गए उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी फिर से मिल सके.

userinfo एंडपॉइंट अनुरोध के हेडर
Authorization header बेयरर टाइप का ऐक्सेस टोकन.

उदाहरण के लिए, अगर आपका userinfo एंडपॉइंट यहां उपलब्ध है https://myservice.example.com/userinfo, अनुरोध कुछ ऐसा दिख सकता है:

GET /userinfo HTTP/1.1
Host: myservice.example.com
Authorization: Bearer ACCESS_TOKEN

अपने userinfo एंडपॉइंट पर अनुरोधों को मैनेज करने के लिए यह तरीका अपनाएं:

  1. ऑथराइज़ेशन हेडर से ऐक्सेस टोकन निकालें और ऐक्सेस टोकन से जुड़े उपयोगकर्ता की जानकारी दिखाएं.
  2. अगर ऐक्सेस टोकन अमान्य है, तो WWW-Authenticate रिस्पॉन्स हेडर का इस्तेमाल करके, एचटीटीपी 401 बिना अनुमति वाली गड़बड़ी दिखाएं. नीचे userinfo गड़बड़ी के जवाब का एक उदाहरण दिया गया है:
    HTTP/1.1 401 Unauthorized
    WWW-Authenticate: error="invalid_token",
    error_description="The Access Token expired"
    
    अगर लिंक करने की प्रोसेस के दौरान, बिना अनुमति वाली 401 या गड़बड़ी वाला कोई भी गड़बड़ी का मैसेज मिलता है, तो इस गड़बड़ी को ठीक नहीं किया जा सकेगा. साथ ही, वापस मिले टोकन को खारिज कर दिया जाएगा और उपयोगकर्ता को फिर से लिंक करने की प्रोसेस शुरू करनी होगी.
  3. अगर ऐक्सेस टोकन मान्य है, तो वापस जाएं और एचटीटीपीएस के मुख्य हिस्से में, यहां दिए गए JSON ऑब्जेक्ट के साथ एचटीटीपी 200 रिस्पॉन्स भेजें जवाब:

    {
    "sub": "USER_UUID",
    "email": "EMAIL_ADDRESS",
    "given_name": "FIRST_NAME",
    "family_name": "LAST_NAME",
    "name": "FULL_NAME",
    "picture": "PROFILE_PICTURE",
    }
    अगर आपका userinfo एंडपॉइंट, एचटीटीपी 200 सक्सेस रिस्पॉन्स देता है, तो हासिल किए गए टोकन और दावे, उपयोगकर्ता के Google खाते से रजिस्टर किए जाते हैं.

    userinfo एंडपॉइंट रिस्पॉन्स
    sub एक यूनीक आईडी, जो आपके सिस्टम में उपयोगकर्ता की पहचान करता है.
    email उपयोगकर्ता का ईमेल पता.
    given_name ज़रूरी नहीं: उपयोगकर्ता का नाम.
    family_name ज़रूरी नहीं: उपयोगकर्ता का सरनेम.
    name ज़रूरी नहीं: उपयोगकर्ता का पूरा नाम.
    picture ज़रूरी नहीं: उपयोगकर्ता की प्रोफ़ाइल फ़ोटो.