क्लाइंट-साइड वेब ऐप्लिकेशन के लिए OAuth 2.0

इस दस्तावेज़ में, ऐक्सेस करने के लिए OAuth 2.0 की मदद से पुष्टि करने की सुविधा लागू करने का तरीका बताया गया है JavaScript वेब ऐप्लिकेशन से Google API. OAuth 2.0 उपयोगकर्ताओं को किसी ऐप्लिकेशन के साथ कोई खास डेटा शेयर कर सकते हैं. हालांकि, इस दौरान वे उनके उपयोगकर्ता नाम, पासवर्ड वगैरह को सुरक्षित रख सकते हैं निजी जानकारी. उदाहरण के लिए, कोई ऐप्लिकेशन अनुमति पाने के लिए OAuth 2.0 का इस्तेमाल कर सकता है उपयोगकर्ताओं को अपने Google Drive में फ़ाइलें सेव करने के लिए बढ़ावा दें.

इस OAuth 2.0 फ़्लो को इंप्लिसिट ग्रांट फ़्लो कहा जाता है. इसे इस तरह से डिज़ाइन किया गया है ऐसे ऐप्लिकेशन जो एपीआई को सिर्फ़ तब ऐक्सेस करते हैं, जब उपयोगकर्ता ऐप्लिकेशन में मौजूद होता है. ये ऐप्लिकेशन गोपनीय जानकारी को संग्रहित नहीं कर सकते.

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

Google API क्लाइंट लाइब्रेरी और Google Identity सेवाएं

अगर JavaScript के लिए Google API की क्लाइंट लाइब्रेरी का इस्तेमाल किया जाता है Google को अधिकृत कॉल करने के लिए, आपको OAuth 2.0 फ़्लो को मैनेज करने के लिए, Google Identity Services की JavaScript लाइब्रेरी का इस्तेमाल करता है. कृपया Google पर जाएं आइडेंटिटी सर्विस टोकन मॉडल, जो कि OAuth 2.0 इंप्लिसिट ग्रांट फ़्लो के हिसाब से तय होता है.

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

अपने प्रोजेक्ट के लिए एपीआई चालू करना

अगर कोई ऐप्लिकेशन Google API को कॉल करता है, तो उसे API Console.

अपने प्रोजेक्ट के लिए एपीआई चालू करने के लिए:

  1. Open the API Library Google API Console.
  2. If prompted, select a project, or create a new one.
  3. API Library में, प्रॉडक्ट के हिसाब से ग्रुप किए गए सभी उपलब्ध एपीआई की सूची दी गई है परिवार और लोकप्रियता. आपको जिस एपीआई को चालू करना है अगर वह सूची में नहीं दिख रहा है, तो खोजने के लिए खोज का इस्तेमाल करें इसे ढूंढें या इसके प्रॉडक्ट फ़ैमिली में सभी देखें पर क्लिक करें.
  4. वह एपीआई चुनें जिसे आपको चालू करना है. इसके बाद, चालू करें बटन पर क्लिक करें.
  5. If prompted, enable billing.
  6. If prompted, read and accept the API's Terms of Service.

अनुमति देने वाले क्रेडेंशियल बनाएं

Google API को ऐक्सेस करने के लिए OAuth 2.0 का इस्तेमाल करने वाले किसी भी ऐप्लिकेशन के पास, अनुमति देने वाले क्रेडेंशियल होने चाहिए जो Google के OAuth 2.0 सर्वर पर ऐप्लिकेशन की पहचान करती है. यहां दिए गए चरण, अपने प्रोजेक्ट के लिए क्रेडेंशियल बनाएं. इसके बाद, आपके ऐप्लिकेशन एपीआई ऐक्सेस करने के लिए क्रेडेंशियल का इस्तेमाल कर सकते हैं जिसे आपने उस प्रोजेक्ट के लिए चालू किया है.

  1. Go to the Credentials page.
  2. क्रेडेंशियल बनाएं > OAuth क्लाइंट आईडी.
  3. वेब ऐप्लिकेशन ऐप्लिकेशन का प्रकार चुनें.
  4. फ़ॉर्म भरें. ऐसे ऐप्लिकेशन जो अधिकृत Google API अनुरोध करने के लिए JavaScript का इस्तेमाल करते हैं अनुमति वाले JavaScript के ऑरिजिन होने चाहिए. ऑरिजिन, इनसे डोमेन की पहचान करते हैं आपका ऐप्लिकेशन OAuth 2.0 सर्वर को अनुरोध भेज सकता है. इन ऑरिजिन को पुष्टि करने के लिए Google के नियमों का पालन करें.

ऐक्सेस के दायरों की पहचान करना

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

OAuth 2.0 ऑथराइज़ेशन लागू करने से पहले, हमारा सुझाव है कि आप स्कोप की पहचान कर लें जिसे ऐक्सेस करने के लिए आपके ऐप्लिकेशन को अनुमति की ज़रूरत होगी.

OAuth 2.0 API के दायरे दस्तावेज़ में, उन दायरों की सूची जिनका इस्तेमाल Google API को ऐक्सेस करने के लिए किया जा सकता है.

OAuth 2.0 ऐक्सेस टोकन पाना

नीचे दिए गए चरण दिखाते हैं कि आपका ऐप्लिकेशन, एपीआई का इस्तेमाल करने के लिए Google के OAuth 2.0 सर्वर के साथ कैसे इंटरैक्ट करता है उपयोगकर्ता की ओर से एपीआई अनुरोध करने के लिए, उपयोगकर्ता की सहमति. आपके ऐप्लिकेशन में वह होना चाहिए उपयोगकर्ता की अनुमति की ज़रूरत होती है.

पहला चरण: Google के OAuth 2.0 सर्वर पर रीडायरेक्ट करना

किसी उपयोगकर्ता के डेटा को ऐक्सेस करने की अनुमति का अनुरोध करने के लिए, उपयोगकर्ता को Google के OAuth 2.0 पर रीडायरेक्ट करें सर्वर.

OAuth 2.0 एंडपॉइंट

Google के OAuth 2.0 एंडपॉइंट से ऐक्सेस का अनुरोध करने के लिए, यहां एक यूआरएल जनरेट करें https://accounts.google.com/o/oauth2/v2/auth. इस एंडपॉइंट को एचटीटीपीएस से ऐक्सेस किया जा सकता है; सामान्य एचटीटीपी कनेक्शन अस्वीकार कर दिए गए हैं.

Google ऑथराइज़ेशन सर्वर, वेब के लिए इन क्वेरी स्ट्रिंग पैरामीटर के साथ काम करता है सर्वर ऐप्लिकेशन:

पैरामीटर
client_id ज़रूरी है

आपके ऐप्लिकेशन का क्लाइंट आईडी. आपको यह वैल्यू यहां दिखेगी API Consoleअभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Credentials page.

redirect_uri ज़रूरी है

यह तय करता है कि उपयोगकर्ता के पूरा करने के बाद एपीआई सर्वर, उपयोगकर्ता को कहां रीडायरेक्ट करता है ऑथराइज़ेशन फ़्लो. वैल्यू, इनमें से किसी एक आधिकारिक रीडायरेक्ट यूआरआई से पूरी तरह मैच होनी चाहिए: OAuth 2.0 क्लाइंट, जिसे आपने अपने क्लाइंट के API Consoleअभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है Credentials page. अगर यह मान किसी दिए गए client_id के लिए आधिकारिक रीडायरेक्ट यूआरआई, आपको redirect_uri_mismatch गड़बड़ी.

ध्यान दें कि http या https स्कीम, केस, और ट्रेलिंग स्लैश ('/') सभी से मेल खाना चाहिए.

response_type ज़रूरी है

JavaScript ऐप्लिकेशन को पैरामीटर का मान token पर सेट करना होगा. यह वैल्यू, Google के ऑथराइज़ेशन सर्वर को ऐक्सेस टोकन को उस यूआरआई (#) के फ़्रैगमेंट आइडेंटिफ़ायर में name=value जोड़ा जिससे मिला अनुमति देने की प्रोसेस पूरी होने के बाद, उपयोगकर्ता को दूसरे वेबलिंक पर भेजा जाता है.

scope ज़रूरी है

ऐप्लिकेशन स्पेस-डीलिमिटेड दायरों की सूची, जो उन संसाधनों की पहचान करती है जिन्हें आपका ऐप्लिकेशन, का ऐक्सेस दिया गया है. ये वैल्यू उस स्क्रीन के बारे में बताती हैं जिसे Google, उपयोगकर्ता.

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

हमारा सुझाव है कि आपका ऐप्लिकेशन, अनुमति के दायरों के ऐक्सेस का अनुरोध करे मदद मिलती है. कॉन्टेक्स्ट के हिसाब से उपयोगकर्ता के डेटा को ऐक्सेस करने का अनुरोध करके, ज़्यादा ऐक्सेस देकर पुष्टि करना, आप लोगों की मदद करने के लिए उन्हें यह समझने में मदद मिलती है कि आपके ऐप्लिकेशन को जिस ऐक्सेस की ज़रूरत है वह क्यों मांग रहा है.

state सुझाया गया

ऐसा कोई भी स्ट्रिंग मान तय करता है, जिसका इस्तेमाल आपका ऐप्लिकेशन आपके की अनुमति का अनुरोध और अनुमति देने वाले सर्वर का जवाब. सर्वर वही वैल्यू दिखाता है जो आपने name=value पेयर के तौर पर भेजी है यूआरएल फ़्रैगमेंट आइडेंटिफ़ायर (#) का तरीका आपके आवेदन की सहमति या मना करने के बाद redirect_uri ऐक्सेस अनुरोध.

इस पैरामीटर का इस्तेमाल कई कामों के लिए किया जा सकता है, जैसे कि उपयोगकर्ता को आपके आवेदन में सही संसाधन, नॉन्स भेजना, और क्रॉस-साइट अनुरोध को कम करना जालसाज़ी. आपके redirect_uri का अनुमान लगाने के लिए, state का इस्तेमाल करें आपको यह भरोसा दिलाया जा सकता है कि इनकमिंग कनेक्शन पुष्टि करने का अनुरोध. अगर आप कोई रैंडम स्ट्रिंग जनरेट करते हैं या कुकी के हैश को कोड में बदलते हैं या कोई अन्य वैल्यू होती है, जो क्लाइंट की स्थिति को कैप्चर करती है, तो आप साथ ही, यह पक्का करें कि अनुरोध और रिस्पॉन्स एक ही ब्राउज़र में जनरेट हुए हों, ऐसे हमलों से सुरक्षा देना अलग-अलग साइटों के लिए अनुरोध जालसाज़ी. ज़्यादा जानकारी के लिए, OpenID Connect state टोकन बनाने और उसकी पुष्टि करने के उदाहरण के लिए दस्तावेज़.

include_granted_scopes ज़रूरी नहीं

ऐप्लिकेशन को अतिरिक्त ऐक्सेस का अनुरोध करने के लिए वृद्धिशील प्राधिकरण का उपयोग करने में सक्षम बनाता है शर्तों को पूरा करते हैं. अगर आप इस पैरामीटर का मान true और अनुमति देने का अनुरोध स्वीकार कर लिया जाता है, तो नया ऐक्सेस टोकन, जिसे उपयोगकर्ता ने पहले ऐप्लिकेशन को ऐक्सेस दिया था. ज़्यादा जानकारी के लिए, उदाहरण के लिए, इंक्रीमेंटल ऑथराइज़ेशन सेक्शन.

login_hint ज़रूरी नहीं

अगर आपके ऐप्लिकेशन को पता है कि कौनसा उपयोगकर्ता प्रमाणित करने की कोशिश कर रहा है, तो वह इस पैरामीटर का इस्तेमाल कर सकता है का इस्तेमाल करें. सर्वर, इस प्रॉम्प्ट के लिए साइन-इन फ़ॉर्म में ईमेल फ़ील्ड को पहले से भरकर या सही मल्टी-लॉगिन सेशन चुनना होगा.

पैरामीटर वैल्यू को किसी ईमेल पते या sub आइडेंटिफ़ायर पर सेट करें, जो उपयोगकर्ता का Google आईडी सेट करें.

prompt ज़रूरी नहीं

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

आपको ये वैल्यू दिख सकती हैं:

none पुष्टि करने या सहमति देने वाली कोई स्क्रीन न दिखाएं. इसके साथ दर्ज नहीं किया जाना चाहिए अन्य वैल्यू का इस्तेमाल किया जाता है.
consent उपयोगकर्ता से सहमति लेने का अनुरोध करें.
select_account उपयोगकर्ता को कोई खाता चुनने का निर्देश दें.

सैंपल के तौर पर, Google के ऑथराइज़ेशन सर्वर पर रीडायरेक्ट करने की सुविधा

नीचे एक उदाहरण यूआरएल दिखाया गया है, जिसमें लाइन ब्रेक और पढ़ने लायक स्पेस हैं.

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A//www.googleapis.com/auth/drive.metadata.readonly&
 include_granted_scopes=true&
 response_type=token&
 state=state_parameter_passthrough_value&
 redirect_uri=https%3A//oauth2.example.com/code&
 client_id=client_id

अनुरोध यूआरएल बनाने के बाद, उपयोगकर्ता को उस पर रीडायरेक्ट करें.

JavaScript सैंपल कोड

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

/*
 * Create form to request access token from Google's OAuth 2.0 server.
 */
function oauthSignIn() {
  // Google's OAuth 2.0 endpoint for requesting an access token
  var oauth2Endpoint = 'https://accounts.google.com/o/oauth2/v2/auth';

  // Create <form> element to submit parameters to OAuth 2.0 endpoint.
  var form = document.createElement('form');
  form.setAttribute('method', 'GET'); // Send as a GET request.
  form.setAttribute('action', oauth2Endpoint);

  // Parameters to pass to OAuth 2.0 endpoint.
  var params = {'client_id': 'YOUR_CLIENT_ID',
                'redirect_uri': 'YOUR_REDIRECT_URI',
                'response_type': 'token',
                'scope': 'https://www.googleapis.com/auth/drive.metadata.readonly',
                'include_granted_scopes': 'true',
                'state': 'pass-through value'};

  // Add form parameters as hidden input values.
  for (var p in params) {
    var input = document.createElement('input');
    input.setAttribute('type', 'hidden');
    input.setAttribute('name', p);
    input.setAttribute('value', params[p]);
    form.appendChild(input);
  }

  // Add form to page and submit it to open the OAuth 2.0 endpoint.
  document.body.appendChild(form);
  form.submit();
}

दूसरा चरण: Google, उपयोगकर्ता से सहमति लेने का अनुरोध करता है

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

आपके आवेदन को इस चरण में कुछ भी करने की आवश्यकता नहीं है क्योंकि वह से प्रतिक्रिया की प्रतीक्षा करता है Google के OAuth 2.0 सर्वर से पता चलता है कि कोई ऐक्सेस दिया गया था या नहीं. उस जवाब के बारे में का पालन करने के लिए नीचे दिया गया तरीका अपनाएं.

गड़बड़ियां

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

admin_policy_enforced

Google खाता, नीचे बताई गई नीतियों की वजह से एक या एक से ज़्यादा दायरों को अनुमति नहीं दे सकता अपने Google Workspace एडमिन से संपर्क करना होगा. Google Workspace एडमिन का सहायता लेख पढ़ें यह कंट्रोल करना कि किस तीसरे पक्ष और इंटरनल ऐप्लिकेशन, Google Workspace का डेटा ऐक्सेस करते हैं ताकि इस बारे में ज़्यादा जानकारी मिल सके कि कोई एडमिन, सभी दायरों या संवेदनशील जानकारी के ऐक्सेस पर कैसे पाबंदी लगा सकता है और आपके OAuth क्लाइंट आईडी का ऐक्सेस साफ़ तौर पर मिलने तक, दायरों पर पाबंदी लगा दी जाएगी.

disallowed_useragent

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

Android

अनुमति देने के अनुरोध खोलते समय, Android डेवलपर को गड़बड़ी का यह मैसेज दिख सकता है android.webkit.WebView. डेवलपर को इसके बजाय, इन Android लाइब्रेरी का इस्तेमाल करना चाहिए Android के लिए Google साइन-इन या Notebook Foundation के लिए Android के लिए AppAuth.

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

iOS

अनुमति के अनुरोध खोलते समय, iOS और macOS डेवलपर को यह गड़बड़ी दिख सकती है WKWebView. डेवलपर को इसके बजाय iOS लाइब्रेरी का इस्तेमाल करना चाहिए, जैसे कि iOS के लिए Google साइन-इन या Notebook Foundation की सेवा iOS के लिए AppAuth.

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

org_internal

अनुरोध में दिया गया OAuth क्लाइंट आईडी, एक ऐसे प्रोजेक्ट का हिस्सा है जो Google खातों को तय Google Cloud का संगठन. इस कॉन्फ़िगरेशन विकल्प के बारे में ज़्यादा जानकारी के लिए, यहां देखें: उपयोगकर्ता का टाइप 'ऐसी स्क्रीन जहां OAuth के लिए सहमति दी जाती है' सेट अप करने का सहायता लेख पढ़ें.

invalid_client

जिस ऑरिजिन से अनुरोध किया गया है उसकी अनुमति इस क्लाइंट के पास नहीं है. यहां जाएं: origin_mismatch.

invalid_grant

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

origin_mismatch

अनुमति पाने के अनुरोध की शुरुआत करने वाली JavaScript की स्कीम, डोमेन, और/या पोर्ट OAuth क्लाइंट आईडी के लिए रजिस्टर किए गए अनुमति वाले JavaScript ऑरिजिन यूआरआई से मैच करता है. समीक्षा की अनुमति दी गई Google API Consoleमें JavaScript ऑरिजिन Credentials page.

redirect_uri_mismatch

अनुमति देने के अनुरोध में पास किया गया redirect_uri, उस आधिकारिक खाते से मेल नहीं खाता जिसे अनुमति मिली है OAuth क्लाइंट आईडी के लिए रीडायरेक्ट यूआरआई. यहां दिए गए आधिकारिक रीडायरेक्ट यूआरआई की समीक्षा करें: Google API Console पर बताया गया हैCredentials page.

अनुमति पाने के अनुरोध की शुरुआत करने वाली JavaScript की स्कीम, डोमेन, और/या पोर्ट OAuth क्लाइंट आईडी के लिए रजिस्टर किए गए अनुमति वाले JavaScript ऑरिजिन यूआरआई से मैच करता है. जानकारी देखें इसमें अनुमति वाले JavaScript ऑरिजिन, Google API Console पर बताया गया हैCredentials page.

redirect_uri पैरामीटर ऐसा OAuth आउट-ऑफ़-बैंड (OOB) फ़्लो देख सकता है जिसमें अब काम नहीं करता. देखें डेटा को दूसरी जगह भेजने से जुड़ी गाइड अपडेट करें. इंटिग्रेशन.

invalid_request

आपके किए गए अनुरोध में कोई गड़बड़ी थी. ऐसा कई वजहों से हो सकता है:

  • अनुरोध सही तरीके से फ़ॉर्मैट नहीं किया गया था
  • अनुरोध में ज़रूरी पैरामीटर मौजूद नहीं थे
  • अनुरोध, पुष्टि करने के लिए किसी ऐसे तरीके का इस्तेमाल करता है जो Google पर काम नहीं करता. अपने OAuth की पुष्टि करें इंटिग्रेशन के लिए, इंटिग्रेशन के सुझाए गए तरीके का इस्तेमाल किया जाता है

तीसरा चरण: OAuth 2.0 सर्वर रिस्पॉन्स मैनेज करना

OAuth 2.0 एंडपॉइंट

OAuth 2.0 सर्वर, आपकेredirect_uri ऐक्सेस टोकन के लिए अनुरोध किया गया है.

अगर उपयोगकर्ता अनुरोध को मंज़ूरी देता है, तो रिस्पॉन्स में ऐक्सेस टोकन शामिल होता है. अगर उपयोगकर्ता अनुरोध स्वीकार नहीं करता है, तो जवाब में एक गड़बड़ी का मैसेज है. ऐक्सेस टोकन या रीडायरेक्ट यूआरआई के हैश फ़्रैगमेंट पर गड़बड़ी का मैसेज दिखाता है, जैसा कि नीचे दिखाया गया है:

  • ऐक्सेस टोकन रिस्पॉन्स:

    https://oauth2.example.com/callback#access_token=4/P7q7W91&token_type=Bearer&expires_in=3600

    access_token पैरामीटर के अलावा, फ़्रैगमेंट स्ट्रिंग भी इसमें token_type पैरामीटर होता है, जो हमेशा Bearer और expires_in पैरामीटर से पता चलता है कि टोकन का लाइफ़टाइम, सेकंड में. अगर state पैरामीटर दिया गया था तो इसकी वैल्यू भी ऐक्सेस टोकन के अनुरोध में शामिल होती है.

  • गड़बड़ी का जवाब:
    https://oauth2.example.com/callback#error=access_denied
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

OAuth 2.0 सर्वर के रिस्पॉन्स का सैंपल

नीचे दिए गए सैंपल यूआरएल पर क्लिक करके, इस फ़्लो की जांच की जा सकती है. यह यूआरएल अपनी Google डिस्क में मौजूद फ़ाइलों का मेटाडेटा देखने के लिए रीड-ओनली ऐक्सेस:

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A//www.googleapis.com/auth/drive.metadata.readonly&
 include_granted_scopes=true&
 response_type=token&
 state=state_parameter_passthrough_value&
 redirect_uri=https%3A//oauth2.example.com/code&
 client_id=client_id

OAuth 2.0 फ़्लो पूरा करने के बाद, आपको http://localhost/oauth2callback. वह यूआरएल एक 404 NOT FOUND गड़बड़ी जब तक आपकी लोकल मशीन यहां पर फ़ाइल नहीं चला देती वह पता. अगले चरण में, यूआरआई, जब उपयोगकर्ता को आपके ऐप्लिकेशन पर वापस रीडायरेक्ट किया जाता है.

Calling Google API

OAuth 2.0 एंडपॉइंट

जब आपके ऐप्लिकेशन को ऐक्सेस टोकन मिल जाता है, तब आपके पास इस टोकन का इस्तेमाल करके, Google को कॉल करने का विकल्प होता है किसी दिए गए प्रतिनिधि की ओर से API उपयोगकर्ता खाते के लिए. ऐसा करने के लिए, शामिल करें एपीआई को किए गए अनुरोध में access_token क्वेरी शामिल करके, ऐक्सेस टोकन पैरामीटर या Authorization एचटीटीपी हेडर Bearer वैल्यू. जब मुमकिन हो, एचटीटीपी हेडर को प्राथमिकता दी जाती है, क्योंकि सर्वर लॉग में क्वेरी स्ट्रिंग अक्सर दिखती हैं. ज़्यादातर मामलों में आप Google API पर अपने कॉल सेट अप करने के लिए क्लाइंट लाइब्रेरी का उपयोग कर सकते हैं (उदाहरण के लिए, Drive Files API को कॉल करना).

आप सभी Google API को आज़मा सकते हैं और यहां पर उनके दायरे देख सकते हैं OAuth 2.0 Playground.

एचटीटीपी जीईटी के उदाहरण

एक कॉल drive.files Authorization: Bearer एचटीटीपी का इस्तेमाल करके एंडपॉइंट (Drive Files API) का इस्तेमाल करना हेडर ऐसा दिख सकता है. ध्यान दें कि आपको अपना ऐक्सेस टोकन बताना होगा:

GET /drive/v2/files HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

यहां access_token का इस्तेमाल करके, पुष्टि किए गए उपयोगकर्ता के लिए उसी एपीआई को कॉल किया गया है क्वेरी स्ट्रिंग पैरामीटर:

GET https://www.googleapis.com/drive/v2/files?access_token=access_token

curl के उदाहरण

curl कमांड-लाइन ऐप्लिकेशन का इस्तेमाल करके, इन कमांड की जांच की जा सकती है. यह रही उदाहरण के लिए, जो एचटीटीपी हेडर विकल्प का इस्तेमाल करता है (प्राथमिकता दी जाती है):

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/drive/v2/files

इसके अलावा, क्वेरी स्ट्रिंग पैरामीटर विकल्प:

curl https://www.googleapis.com/drive/v2/files?access_token=access_token

JavaScript सैंपल कोड

नीचे दिया गया कोड स्निपेट, सीओआरएस (क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग) का इस्तेमाल करके किसी Google API को अनुरोध भेज सकते हैं. इस उदाहरण में, JavaScript के लिए Google API क्लाइंट लाइब्रेरी का इस्तेमाल नहीं किया गया है. हालांकि, अगर क्लाइंट लाइब्रेरी का इस्तेमाल नहीं किया जा रहा है, तो लाइब्रेरी के दस्तावेज़ में दी गई सीओआरएस सहायता गाइड से आपको काफ़ी मदद मिल सकती है ताकि हम इन अनुरोधों को बेहतर ढंग से समझ सकें.

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

var xhr = new XMLHttpRequest();
xhr.open('GET',
    'https://www.googleapis.com/drive/v3/about?fields=user&' +
    'access_token=' + params['access_token']);
xhr.onreadystatechange = function (e) {
  console.log(xhr.response);
};
xhr.send(null);

पूरा उदाहरण

OAuth 2.0 एंडपॉइंट

यह कोड सैंपल, JavaScript में OAuth 2.0 फ़्लो को पूरा करने का तरीका बताता है. ऐसा करने के लिए, JavaScript के लिए Google API क्लाइंट लाइब्रेरी. यह कोड ऐसे एचटीएमएल पेज के लिए है जो एपीआई अनुरोध की कोशिश करें. जब आप बटन पर क्लिक करते हैं, तो कोड जांच करके यह देखता है कि पृष्ठ ने आपके ब्राउज़र के लोकल स्टोरेज में मौजूद एपीआई ऐक्सेस टोकन. अगर ऐसा है, तो यह एपीआई अनुरोध को लागू करता है. या फिर, तो यह OAuth 2.0 फ़्लो शुरू कर देता है.

OAuth 2.0 फ़्लो के लिए, पेज पर यह तरीका अपनाएं:

  1. यह उपयोगकर्ता को Google के OAuth 2.0 सर्वर पर ले जाता है, जो https://www.googleapis.com/auth/drive.metadata.readonly दायरा.
  2. अनुरोध किए गए एक या उससे ज़्यादा दायरों का ऐक्सेस देने या अस्वीकार करने के बाद, उपयोगकर्ता को यहां रीडायरेक्ट किया जाता है ओरिजनल पेज, जो फ़्रैगमेंट आइडेंटिफ़ायर स्ट्रिंग से ऐक्सेस टोकन को पार्स करता है.
  3. यह पेज, एपीआई अनुरोध का सैंपल देने के लिए, ऐक्सेस टोकन का इस्तेमाल करता है.

    एपीआई अनुरोध, फ़ाइलें वापस पाने के लिए Drive API के about.get तरीके का इस्तेमाल करता है उस उपयोगकर्ता के Google Drive खाते की जानकारी जिसे अनुमति मिली हुई है.

  4. अगर अनुरोध सही तरीके से लागू होता है, तो ब्राउज़र के डीबगिंग पेज में एपीआई की जांच लॉग की जाती है कंसोल.

ऐप्लिकेशन का ऐक्सेस वापस लेने के लिए, यहां जाएं: आपके लिए अनुमतियां पेज Google खाता. ऐप्लिकेशन को Google API दस्तावेज़ के लिए OAuth 2.0 डेमो के तौर पर सूची में दिखाया जाएगा.

इस कोड को स्थानीय तौर पर चलाने के लिए, आपको YOUR_CLIENT_ID और YOUR_REDIRECT_URI आपके वैरिएबल से संबंधित वैरिएबल अनुमति देने के क्रेडेंशियल. YOUR_REDIRECT_URI वैरिएबल उसी यूआरएल पर सेट होना चाहिए जहां पेज दिखाया जा रहा है. वैल्यू इनमें से किसी एक से पूरी तरह मैच होनी चाहिए OAuth 2.0 क्लाइंट के लिए, अनुमति वाले रीडायरेक्ट यूआरआई, जिन्हें आपने API Console पर बताया गया हैCredentials page. अगर आपने यह मान किसी अधिकृत यूआरआई से मेल नहीं खाता, आपको एक redirect_uri_mismatch मिलेगा गड़बड़ी. आपके प्रोजेक्ट में यह भी होना चाहिए सही एपीआई चालू किया.

<html><head></head><body>
<script>
  var YOUR_CLIENT_ID = 'REPLACE_THIS_VALUE';
  var YOUR_REDIRECT_URI = 'REPLACE_THIS_VALUE';

  // Parse query string to see if page request is coming from OAuth 2.0 server.
  var fragmentString = location.hash.substring(1);
  var params = {};
  var regex = /([^&=]+)=([^&]*)/g, m;
  while (m = regex.exec(fragmentString)) {
    params[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
  }
  if (Object.keys(params).length > 0 && params['state']) {
    if (params['state'] == localStorage.getItem('state')) {
      localStorage.setItem('oauth2-test-params', JSON.stringify(params) );

      trySampleRequest();
    } else {
      console.log('State mismatch. Possible CSRF attack');
    }
  }

  // Function to generate a random state value
  function generateCryptoRandomState() {
    const randomValues = new Uint32Array(2);
    window.crypto.getRandomValues(randomValues);

    // Encode as UTF-8
    const utf8Encoder = new TextEncoder();
    const utf8Array = utf8Encoder.encode(
      String.fromCharCode.apply(null, randomValues)
    );

    // Base64 encode the UTF-8 data
    return btoa(String.fromCharCode.apply(null, utf8Array))
      .replace(/\+/g, '-')
      .replace(/\//g, '_')
      .replace(/=+$/, '');
  }

  // If there's an access token, try an API request.
  // Otherwise, start OAuth 2.0 flow.
  function trySampleRequest() {
    var params = JSON.parse(localStorage.getItem('oauth2-test-params'));
    if (params && params['access_token']) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET',
          'https://www.googleapis.com/drive/v3/about?fields=user&' +
          'access_token=' + params['access_token']);
      xhr.onreadystatechange = function (e) {
        if (xhr.readyState === 4 && xhr.status === 200) {
          console.log(xhr.response);
        } else if (xhr.readyState === 4 && xhr.status === 401) {
          // Token invalid, so prompt for user permission.
          oauth2SignIn();
        }
      };
      xhr.send(null);
    } else {
      oauth2SignIn();
    }
  }

  /*
   * Create form to request access token from Google's OAuth 2.0 server.
   */
  function oauth2SignIn() {
    // create random state value and store in local storage
    var state = generateCryptoRandomState();
    localStorage.setItem('state', state);

    // Google's OAuth 2.0 endpoint for requesting an access token
    var oauth2Endpoint = 'https://accounts.google.com/o/oauth2/v2/auth';

    // Create element to open OAuth 2.0 endpoint in new window.
    var form = document.createElement('form');
    form.setAttribute('method', 'GET'); // Send as a GET request.
    form.setAttribute('action', oauth2Endpoint);

    // Parameters to pass to OAuth 2.0 endpoint.
    var params = {'client_id': YOUR_CLIENT_ID,
                  'redirect_uri': YOUR_REDIRECT_URI,
                  'scope': 'https://www.googleapis.com/auth/drive.metadata.readonly',
                  'state': state,
                  'include_granted_scopes': 'true',
                  'response_type': 'token'};

    // Add form parameters as hidden input values.
    for (var p in params) {
      var input = document.createElement('input');
      input.setAttribute('type', 'hidden');
      input.setAttribute('name', p);
      input.setAttribute('value', params[p]);
      form.appendChild(input);
    }

    // Add form to page and submit it to open the OAuth 2.0 endpoint.
    document.body.appendChild(form);
    form.submit();
  }
</script>

<button onclick="trySampleRequest();">Try sample request</button>
</body></html>

JavaScript के ऑरिजिन की पुष्टि करने के नियम

आपकी मदद करने के लिए, Google JavaScript के ऑरिजिन पर पुष्टि करने के ये नियम लागू करता है डेवलपर अपने ऐप्लिकेशन सुरक्षित बनाए रखते हैं. आपके JavaScript के ऑरिजिन को इन नियमों का पालन करना होगा. आरएफ़सी 3986 सेक्शन 3 देखें डोमेन, होस्ट, और स्कीम की परिभाषा के बारे में नीचे बताया गया है.

सत्यापन नियम
स्कीम

JavaScript ऑरिजिन को सादे एचटीटीपी के बजाय, एचटीटीपीएस स्कीम का इस्तेमाल करना चाहिए. लोकलहोस्ट यूआरआई (लोकल होस्ट आईपी पते के यूआरआई सहित) इस नियम का पालन नहीं करते.

होस्ट

होस्ट, अमान्य आईपी पते नहीं हो सकते. लोकल होस्ट के आईपी पतों पर यह नियम लागू नहीं होता.

डोमेन
  • होस्ट टीएलडी (टॉप लेवल डोमेन) सार्वजनिक सफ़िक्स सूची से जुड़ा होना चाहिए.
  • होस्ट डोमेन “googleusercontent.com” नहीं हो सकते.
  • JavaScript के ऑरिजिन में, यूआरएल को छोटा करने वाले डोमेन शामिल नहीं किए जा सकते. जैसे, goo.gl जब तक कि ऐप्लिकेशन डोमेन का मालिक न हो.
  • उपयोगकर्ता की जानकारी

    JavaScript के ऑरिजिन में, userinfo सबकॉम्पोनेंट शामिल नहीं हो सकता.

    पाथ

    JavaScript के ऑरिजिन में, पाथ कॉम्पोनेंट शामिल नहीं किया जा सकता.

    क्वेरी

    JavaScript के ऑरिजिन में क्वेरी कॉम्पोनेंट शामिल नहीं हो सकता.

    फ़्रैगमेंट

    JavaScript के ऑरिजिन में फ़्रैगमेंट कॉम्पोनेंट शामिल नहीं किया जा सकता.

    वर्ण JavaScript के ऑरिजिन में कुछ वर्ण नहीं हो सकते, जिनमें ये शामिल हैं:
    • वाइल्डकार्ड वर्ण ('*')
    • प्रिंट न हो सकने वाले ASCII वर्ण
    • अमान्य प्रतिशत एन्कोडिंग (कोई भी प्रतिशत एन्कोडिंग जो URL-एन्कोडिंग का पालन नहीं करती प्रतिशत के चिह्न का रूप) जिसके बाद दो हेक्साडेसिमल अंक होते हैं)
    • शून्य वर्ण (कोड में बदला गया शून्य वर्ण, उदाहरण के लिए, %00, %C0%80)

    इंक्रीमेंटल अनुमति

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

    उदाहरण के लिए, एक ऐसा ऐप्लिकेशन जो लोगों को म्यूज़िक ट्रैक का सैंपल देने और मिक्स बनाने की सुविधा देता है, उसके लिए बहुत कम साइन-इन के समय पर उपलब्ध संसाधनों का उपयोग कर सकते हैं, जो शायद प्रवेश करने वाले व्यक्ति के नाम से ज़्यादा कुछ नहीं होगा. हालांकि, सेव किए गए मिक्स को सेव करने के लिए, उसे अपने Google Drive का ऐक्सेस देना होगा. ज़्यादातर लोगों को यह मिल जाएगा यह स्वाभाविक है, अगर उनसे Google Drive को ऐक्सेस करने के लिए कहा गया हो, जबकि ऐप्लिकेशन असल में उस समय ऐसा करता हो ज़रूरत थी.

    इस स्थिति में, साइन-इन करते समय ऐप्लिकेशन openid और बुनियादी साइन-इन करने के लिए, profile दायरे करता है. इसके बाद, बाद में पहले अनुरोध के समय https://www.googleapis.com/auth/drive.file स्कोप मिक्स.

    इंक्रीमेंटल अनुमति से मिलने वाले ऐक्सेस टोकन पर, ये नियम लागू होते हैं:

    • इस टोकन का इस्तेमाल, नया, संयुक्त प्राधिकरण.
    • जब किसी ऐक्सेस टोकन को हासिल करने के लिए, अनुमति वाले रिफ़्रेश टोकन का इस्तेमाल किया जाता है, तो ऐक्सेस टोकन, अनुमति देने वाले संयुक्त शुल्क को दिखाता है और इसका इस्तेमाल जवाब में scope वैल्यू शामिल की गईं.
    • एक साथ अनुमति देने में, वे सभी दायरे शामिल होते हैं जिन्हें उपयोगकर्ता ने एपीआई प्रोजेक्ट को दिया है. यहां तक कि अगर अनुदान के लिए अलग-अलग क्लाइंट से अनुरोध किया गया था. उदाहरण के लिए, अगर किसी उपयोगकर्ता ने एक ऐप्लिकेशन के डेस्कटॉप क्लाइंट का इस्तेमाल करके एक दायरे की अनुमति दी गई और फिर उसी दिए गए हैं, तो संयुक्त प्राधिकरण में दोनों दायरे शामिल होंगे.
    • अगर किसी ऐसे टोकन को रद्द किया जाता है जो अनुमति देने वाले मिले-जुले तरीकों का इस्तेमाल करता है, तो उन सभी को ऐक्सेस करें संबंधित उपयोगकर्ता की ओर से अनुमति के दायरे एक साथ निरस्त किए जाते हैं.

    नीचे दिए गए कोड सैंपल, किसी मौजूदा ऐक्सेस टोकन में स्कोप जोड़ने का तरीका दिखाते हैं. इस तरीके से, ताकि आपको एक से ज़्यादा ऐक्सेस टोकन मैनेज करने की ज़रूरत न पड़े.

    OAuth 2.0 एंडपॉइंट

    किसी मौजूदा ऐक्सेस टोकन में स्कोप जोड़ने के लिए, include_granted_scopes शामिल करें पैरामीटर की जानकारी Google के OAuth 2.0 सर्वर से जुड़े अनुरोध में मिलेगी.

    नीचे दिया गया कोड स्निपेट इसे करने का तरीका बताता है. स्निपेट मान लेता है कि आपने वे दायरे जिनके लिए आपका ऐक्सेस टोकन, ब्राउज़र की लोकल स्टोरेज में मान्य है. ( पूरा उदाहरण कोड, दायरों की एक सूची सेव करता है, जिसके लिए ऐक्सेस टोकन ब्राउज़र के लोकल में oauth2-test-params.scope प्रॉपर्टी को सेट करके मान्य है storage.)

    स्निपेट उन दायरों की तुलना करता है जिनके लिए ऐक्सेस टोकन आपके काम के दायरे के साथ मान्य है डालें. अगर ऐक्सेस टोकन उस दायरे को कवर नहीं करता है, तो OAuth 2.0 फ़्लो शुरू हो जाता है. यहां oauth2SignIn फ़ंक्शन वही है जो इसमें दिया गया था चरण 2 (और जिसकी जानकारी बाद में पूर्ण उदाहरण के लिए).

    var SCOPE = 'https://www.googleapis.com/auth/drive.metadata.readonly';
    var params = JSON.parse(localStorage.getItem('oauth2-test-params'));
    
    var current_scope_granted = false;
    if (params.hasOwnProperty('scope')) {
      var scopes = params['scope'].split(' ');
      for (var s = 0; s < scopes.length; s++) {
        if (SCOPE == scopes[s]) {
          current_scope_granted = true;
        }
      }
    }
    
    if (!current_scope_granted) {
      oauth2SignIn(); // This function is defined elsewhere in this document.
    } else {
      // Since you already have access, you can proceed with the API request.
    }

    टोकन निरस्त करना

    कुछ मामलों में, हो सकता है कि उपयोगकर्ता किसी ऐप्लिकेशन को दिया गया ऐक्सेस वापस लेना चाहें. उपयोगकर्ता, ऐक्सेस रद्द कर सकता है पर जाकर खाता सेटिंग. ज़्यादा जानकारी के लिए, हटाएं तीसरे पक्ष की साइटों का साइट या ऐप्लिकेशन ऐक्सेस सेक्शन और ऐसे ऐप्लिकेशन जिनके पास आपके खाते का ऐक्सेस है सहायता दस्तावेज़ देखें.

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

    OAuth 2.0 एंडपॉइंट

    किसी टोकन को प्रोग्राम के हिसाब से रद्द करने के लिए, आपका ऐप्लिकेशन इसके लिए अनुरोध करता है https://oauth2.googleapis.com/revoke और इसमें पैरामीटर के तौर पर टोकन शामिल होता है:

    curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
            https://oauth2.googleapis.com/revoke?token={token}

    टोकन, ऐक्सेस टोकन या रीफ़्रेश टोकन हो सकता है. अगर टोकन एक ऐक्सेस टोकन है और उसमें प्रासंगिक रीफ़्रेश टोकन के रूप में, तो रीफ़्रेश टोकन को भी निरस्त कर दिया जाएगा.

    अगर सहमति रद्द हो गई है, तो रिस्पॉन्स का एचटीटीपी स्टेटस कोड यह होगा 200. गड़बड़ी की स्थितियों के लिए, एक एचटीटीपी स्टेटस कोड 400 दिखाया जाता है डालें.

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

    function revokeAccess(accessToken) {
      // Google's OAuth 2.0 endpoint for revoking access tokens.
      var revokeTokenEndpoint = 'https://oauth2.googleapis.com/revoke';
    
      // Create <form> element to use to POST data to the OAuth 2.0 endpoint.
      var form = document.createElement('form');
      form.setAttribute('method', 'post');
      form.setAttribute('action', revokeTokenEndpoint);
    
      // Add access token to the form so it is set as value of 'token' parameter.
      // This corresponds to the sample curl request, where the URL is:
      //      https://oauth2.googleapis.com/revoke?token={token}
      var tokenField = document.createElement('input');
      tokenField.setAttribute('type', 'hidden');
      tokenField.setAttribute('name', 'token');
      tokenField.setAttribute('value', accessToken);
      form.appendChild(tokenField);
    
      // Add form to page and submit it to actually revoke the token.
      document.body.appendChild(form);
      form.submit();
    }

    'सभी खातों की सुरक्षा' सुविधा को लागू करना

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

    Google की 'सभी खातों की सुरक्षा' सेवा से आपके ऐप्लिकेशन को भेजे जाने वाले इवेंट टाइप के कुछ उदाहरण:

    • https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
    • https://schemas.openid.net/secevent/oauth/event-type/token-revoked
    • https://schemas.openid.net/secevent/risc/event-type/account-disabled

    ज़्यादा जानकारी के लिए, 'सभी खातों की सुरक्षा' पेज की मदद से उपयोगकर्ता खातों को सुरक्षित रखना ताकि 'सभी खातों की सुरक्षा' सुविधा को लागू करने के बारे में ज़्यादा जानकारी और उपलब्ध इवेंट की पूरी सूची देख सकें.