JavaScript वेब ऐप्लिकेशन के लिए, OAuth 2.0 का इस्तेमाल करना

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

इस 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. YouTube Data API को ढूंढने और चालू करने के लिए, लाइब्रेरी पेज का इस्तेमाल करें. कोई अन्य ढूंढें ऐसे एपीआई जिनका इस्तेमाल आपका ऐप्लिकेशन करेगा और उन्हें भी चालू करेगा.

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

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 ऑथराइज़ेशन लागू करने से पहले, हमारा सुझाव है कि आप स्कोप की पहचान कर लें यह जानकारी ऐक्सेस करने के लिए, आपके ऐप्लिकेशन को अनुमति की ज़रूरत होगी.

YouTube Data API v3 इन दायरों का इस्तेमाल करता है:

बंदूक पर लगने वाली दूरबीन
https://www.googleapis.com/auth/youtubeअपना YouTube खाता मैनेज करें
https://www.googleapis.com/auth/youtube.channel-memberships.creatorअपने चैनल के मौजूदा सक्रिय सदस्यों की सूची और उनका मौजूदा लेवल देखें. यह भी देखें कि वे चैनल के सदस्य कब बने
https://www.googleapis.com/auth/youtube.force-sslअपने YouTube वीडियो की रेटिंग, टिप्पणियां और कैप्शन देखें, उनमें बदलाव करें और उन्हें हमेशा के लिए मिटाएं
https://www.googleapis.com/auth/youtube.readonlyअपना YouTube खाता देखें
https://www.googleapis.com/auth/youtube.uploadअपने YouTube वीडियो मैनेज करें
https://www.googleapis.com/auth/youtubepartnerYouTube पर अपनी परिसंपत्ति तथा संबंधित सामग्री देखें व प्रबंधित करें
https://www.googleapis.com/auth/youtubepartner-channel-auditकिसी YouTube भागीदार की ऑडिट प्रक्रिया के दौरान उससे प्रासंगिक अपने YouTube चैनल की निजी जानकारी देखें

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, उपयोगकर्ता.

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

YouTube Data API v3 इन दायरों का इस्तेमाल करता है:

बंदूक पर लगने वाली दूरबीन
https://www.googleapis.com/auth/youtubeअपना YouTube खाता मैनेज करें
https://www.googleapis.com/auth/youtube.channel-memberships.creatorअपने चैनल के मौजूदा सक्रिय सदस्यों की सूची और उनका मौजूदा लेवल देखें. यह भी देखें कि वे चैनल के सदस्य कब बने
https://www.googleapis.com/auth/youtube.force-sslअपने YouTube वीडियो की रेटिंग, टिप्पणियां और कैप्शन देखें, उनमें बदलाव करें और उन्हें हमेशा के लिए मिटाएं
https://www.googleapis.com/auth/youtube.readonlyअपना YouTube खाता देखें
https://www.googleapis.com/auth/youtube.uploadअपने YouTube वीडियो मैनेज करें
https://www.googleapis.com/auth/youtubepartnerYouTube पर अपनी परिसंपत्ति तथा संबंधित सामग्री देखें व प्रबंधित करें
https://www.googleapis.com/auth/youtubepartner-channel-auditकिसी YouTube भागीदार की ऑडिट प्रक्रिया के दौरान उससे प्रासंगिक अपने YouTube चैनल की निजी जानकारी देखें

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

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

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 के ऑथराइज़ेशन सर्वर पर रीडायरेक्ट करने की सुविधा

नीचे दिया गया सैंपल यूआरएल ऑफ़लाइन ऐक्सेस का अनुरोध करता है (access_type=offline) उस दायरे में है, जो देखने के ऐक्सेस की अनुमति देता है उपयोगकर्ता का YouTube खाता होता है. यह इंक्रीमेंटल ऑथराइज़ेशन का इस्तेमाल करता है, ताकि यह पक्का किया जा सके कि नए ऐक्सेस टोकन में वे सभी दायरे शामिल हैं जिन्हें उपयोगकर्ता ने पहले अनुमति दी थी ऐप्लिकेशन का ऐक्सेस दिया गया है. यूआरएल, ज़रूरी वैल्यू भी सेट करता है redirect_uri, response_type, और client_id पैरामीटर और state के लिए पैरामीटर. यूआरएल में लाइन ब्रेक और स्पेस शामिल हों, ताकि उसे आसानी से पढ़ा जा सके.

https://accounts.google.com/o/oauth2/v2/auth?
 scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly&
 include_granted_scopes=true&
 state=state_parameter_passthrough_value&
 redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback&
 response_type=token&
 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/youtube.force-ssl',
                '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%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly&
 include_granted_scopes=true&
 state=state_parameter_passthrough_value&
 redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback&
 response_type=token&
 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 पर अपने कॉल सेट अप करने के लिए क्लाइंट लाइब्रेरी का उपयोग कर सकते हैं (उदाहरण के लिए, YouTube Data API को कॉल करते हैं).

ध्यान दें कि YouTube Data API, सिर्फ़ YouTube के सेवा खातों के साथ काम करता है ऐसे कॉन्टेंट मालिक जो एक से ज़्यादा YouTube चैनलों के मालिक हैं और उन्हें मैनेज करते हैं. जैसे, रिकॉर्ड लेबल और फ़िल्म स्टूडियो शामिल हैं.

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

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

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

GET /youtube/v3/channels?part=snippet&mine=true HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer access_token

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

GET https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true

curl के उदाहरण

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

curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true

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

curl https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true

JavaScript सैंपल कोड

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

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

var xhr = new XMLHttpRequest();
xhr.open('GET',
    'https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true&' +
    '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/youtube.force-ssl दायरा.
  2. अनुरोध किए गए एक या उससे ज़्यादा दायरों का ऐक्सेस देने या अस्वीकार करने के बाद, उपयोगकर्ता को यहां रीडायरेक्ट किया जाता है ओरिजनल पेज, जो फ़्रैगमेंट आइडेंटिफ़ायर स्ट्रिंग से ऐक्सेस टोकन को पार्स करता है.
  3. यह पेज, एपीआई अनुरोध का सैंपल देने के लिए, ऐक्सेस टोकन का इस्तेमाल करता है.

    यह एपीआई अनुरोध, YouTube Data API के channels.list तरीके को कॉल करता है का इस्तेमाल करें.

  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/youtube/v3/channels?part=snippet&mine=true&' +
          '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/youtube.force-ssl',
                  '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 में इवेंट जोड़ने के लिए भी इस ऐप्लिकेशन का इस्तेमाल कर सकते हैं कैलेंडर.

    इस मामले में, हो सकता है कि साइन-इन के समय, ऐप्लिकेशन को इनकी ज़रूरत न पड़े या वह इन्हें ऐक्सेस करने का अनुरोध न करे किसी भी स्कोप का इस्तेमाल कर सकते हैं. हालांकि, अगर कोई व्यक्ति किसी वीडियो को रेटिंग देने की कोशिश करता है, तो उस वीडियो को प्लेलिस्ट बनाने या कोई दूसरी YouTube कार्रवाई करने पर, ऐप्लिकेशन https://www.googleapis.com/auth/youtube.force-ssl स्कोप. इसी तरह, ऐप्लिकेशन अगर उपयोगकर्ता ने कोशिश की है, तो https://www.googleapis.com/auth/calendar स्कोप कैलेंडर इवेंट जोड़ने के लिए.

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

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

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

    OAuth 2.0 एंडपॉइंट

    इस उदाहरण में, कॉल करने वाला ऐप्लिकेशन, YouTube Analytics में मौजूद डेटा के अलावा, उपयोगकर्ता को मिलने वाले अन्य ऐक्सेस ने पहले ही एप् लिकेशन को अनुमति दे दी है.

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

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

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

    var SCOPE = 'https://www.googleapis.com/auth/youtube.force-ssl';
    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

    ज़्यादा जानकारी के लिए, 'सभी खातों की सुरक्षा' पेज की मदद से उपयोगकर्ता खातों को सुरक्षित रखना .