चेतावनी: यह डेटा Google उपयोगकर्ता डेटा नीति के तहत दिया जाता है. कृपया समीक्षा करें और नीति का पालन करें. ऐसा न करने पर, प्रोजेक्ट या खाता निलंबित हो सकता है.

कोड मॉडल का इस्तेमाल करें

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

OAuth 2.0 ऑथराइज़ेशन कोड फ़्लो की खास जानकारी:

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

कोड क्लाइंट शुरू करना

google.accounts.oauth2.initCodeClient() तरीका, कोड क्लाइंट की शुरुआत करती है.

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

क्लाइंट को शुरू करने के लिए:

  • UX फ़्लो को रीडायरेक्ट करें, ux_mode को redirect पर सेट करें, और redirect_uri की वैल्यू को अपने प्लैटफ़ॉर्म और #39; ऑथराइज़ेशन कोड पर खत्म होने का कोड सेट करें. यह मान, OAuth 2.0 क्लाइंट की अनुमति वाले किसी एक रीडायरेक्ट यूआरआई से पूरी तरह मेल खाना चाहिए. इसे आपने एपीआई कंसोल में कॉन्फ़िगर किया था. यह हमारे रीडायरेक्ट यूआरआई की पुष्टि के नियमों के मुताबिक भी होनी चाहिए.

  • पॉप-अप UX फ़्लो, ux_mode को popup पर सेट करें, और callback के मान को उस फ़ंक्शन के नाम पर सेट करें जिसका इस्तेमाल आप अपने प्लैटफ़ॉर्म को ऑथराइज़ेशन कोड भेजने के लिए करेंगे.

सीएसआरएफ़ से हमले रोकना

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

पुष्टि करने वाला कोड और सीएसआरएफ़ हैंडलिंग दिखाने वाला कोड स्निपेट देखने के लिए, UX मोड को चुनें:

रीडायरेक्ट मोड

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

const client = google.accounts.oauth2.initCodeClient({
  client_id: 'YOUR_GOOGLE_CLIENT_ID',
  scope: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode: 'redirect',
  redirect_uri: "https://your.domain/code_callback_endpoint",
  state: "YOUR_BINDING_VALUE"
});

क्लाइंट शुरू करें जहां उपयोगकर्ता के ब्राउज़र को Google से पुष्टि कोड मिलता है और उसे आपके सर्वर पर भेजता है.

const client = google.accounts.oauth2.initCodeClient({
  client_id: 'YOUR_GOOGLE_CLIENT_ID',
  scope: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode: 'popup',
  callback: (response) => {
    const xhr = new XMLHttpRequest();
    xhr.open('POST', code_receiver_uri, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    // Set custom header for CRSF
    xhr.setRequestHeader('X-Requested-With', 'XmlHttpRequest');
    xhr.onload = function() {
      console.log('Auth code response: ' + xhr.responseText);
    };
    xhr.send('code=' + code);
  },
});

OAuth 2.0 कोड फ़्लो ट्रिगर करें

यूज़र फ़्लो को ट्रिगर करने के लिए, कोड क्लाइंट के requestCode() तरीके को कॉल करें:

<button onclick="client.requestCode();">Authorize with Google</button>

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

पुष्टीकरण कोड हैंडल करना

Google हर उपयोगकर्ता की अनुमति के लिए एक खास कोड जनरेट करता है, जो आपको अपने बैकएंड सर्वर पर मिलता है और जिसकी पुष्टि आप करते हैं.

पॉप-अप मोड के लिए, उपयोगकर्ता और #39; के ब्राउज़र में चल रहे callback के हैंडलर, ऑथराइज़ेशन कोड को आपके प्लैटफ़ॉर्म के होस्ट किए गए एंडपॉइंट पर रिले करते हैं.

रीडायरेक्ट मोड के लिए, GET अनुरोध redirect_url के बताए गए एंडपॉइंट पर भेजा जाता है. यूआरएल के यूआरएल code पैरामीटर में मौजूद ऑथराइज़ेशन कोड को शेयर किया जाता है. ऑथराइज़ेशन कोड पाने के लिए:

  • अगर आपके पास कोई मौजूदा ऑथराइज़ेशन एंडपॉइंट नहीं है, तो ऑथराइज़ेशन एंडपॉइंट बनाएं या

  • GET अनुरोध और यूआरएल पैरामीटर स्वीकार करने के लिए, अपने मौजूदा एंडपॉइंट को अपडेट करें. पहले, पेलोड में ऑथराइज़ेशन कोड वैल्यू वाले PUT अनुरोध का इस्तेमाल किया जाता था.

ऑथराइज़ेशन एंडपॉइंट

आपके ऑथराइज़ेशन कोड एंडपॉइंट को GET वाले अनुरोधों को इन यूआरएल क्वेरी स्ट्रिंग पैरामीटर के साथ मैनेज करना चाहिए:

नाम वैल्यू
पुष्टि करने वाला उपयोगकर्ता के साइन-इन प्रमाणीकरण के लिए अनुरोध
कोड Google की ओर से जनरेट किया गया OAuth2 ऑथराइज़ेशन कोड
एचडी उपयोगकर्ता के खाते का होस्ट किया गया डोमेन
अनुरोध उपयोगकर्ता की सहमति वाला डायलॉग बॉक्स
दायरा अनुमति देने के लिए, एक या ज़्यादा OAuth2 स्कोप की सूची को स्पेस से अलग करें
राज्य CRSF स्थिति वैरिएबल

GET{0/} पैरामीटर वाले यूआरएल एंडपॉइंट के लिए auth-code और example.com के ज़रिए होस्ट किए गए अनुरोध का उदाहरण:

Request URL: https://www.example.com/auth-code?state=42a7bd822fe32cc56&code=4/0AX4XfWiAvnXLqxlckFUVao8j0zvZUJ06AMgr-n0vSPotHWcn9p-zHCjqwr47KHS_vDvu8w&scope=email%20profile%20https://www.googleapis.com/auth/calendar.readonly%20https://www.googleapis.com/auth/photoslibrary.readonly%20https://www.googleapis.com/auth/contacts.readonly%20openid%20https://www.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile&authuser=0&hd=example.com&prompt=consent

जब ऑथराइज़ेशन कोड फ़्लो पहले की JavaScript लाइब्रेरी से शुरू किया जाता है या Google OAuth 2.0 एंडपॉइंट पर सीधे कॉल करने से, तो POST अनुरोध का इस्तेमाल किया जाता है.

एचटीटीपी अनुरोध के मुख्य हिस्से में, पेलोड के तौर पर ऑथराइज़ेशन कोड वाले POST अनुरोध का उदाहरण:

  Request URL: https://www.example.com/auth-code
  Request Payload:
  4/0AX4XfWhll-BMV82wi4YwbrSaTPaRpUGpKqJ4zBxQldU\_70cnIdh-GJOBZlyHU3MNcz4qaw

अनुरोध की पुष्टि करना

CSRF के हमलों से बचने के लिए, अपने सर्वर पर ये काम करें.

रीडायरेक्ट मोड के लिए, state पैरामीटर की वैल्यू देखें.

पुष्टि करें कि X-Requested-With: XmlHttpRequest हेडर को पॉप-अप मोड के लिए सेट किया गया है.

इसके बाद, आपको Google से रीफ़्रेश और ऐक्सेस टोकन पाने के लिए आगे बढ़ें अगर आपने पुष्टि करने के कोड के अनुरोध की पुष्टि पहले कर ली है.

ऐक्सेस पाएं और टोकन रीफ़्रेश करें

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

चरण 5: रीफ़्रेश करने और ऐक्सेस करने के लिए वेब सर्वर ऐप्लिकेशन के लिए OAuth 2.0 का इस्तेमाल करें की गाइड के मुताबिकनिर्देशों का पालन करें.

टोकन मैनेज करना

आपका प्लैटफ़ॉर्म, सुरक्षित तरीके से टोकन रीफ़्रेश करता है. उपयोगकर्ता के खाते हटाने के बाद, सेव किए गए रीफ़्रेश टोकन मिटाएं. इसके अलावा, google.accounts.oauth2.revoke या सीधे https://myaccount.google.com/permissions पर जाकर, उपयोगकर्ता की सहमति निरस्त की जा सकती है.

इसके अलावा, आप कई खातों की सुरक्षा के लिए, उपयोगकर्ता खातों को सुरक्षित रखने के लिए, आरआईएससी का इस्तेमाल कर सकते हैं.

आम तौर पर, आपका बैकएंड प्लैटफ़ॉर्म, ऐक्सेस टोकन का इस्तेमाल करके Google API को कॉल करेगा. अगर आपका वेब ऐप्लिकेशन, सीधे उपयोगकर्ता के ब्राउज़र से Google API को कॉल भी करता है, तो आपको अपने वेब ऐप्लिकेशन के साथ ऐक्सेस टोकन शेयर करने का तरीका लागू करना होगा. ऐसा करना इस गाइड के दायरे में नहीं आता. इस तरीके को अपनाने और JavaScript के लिए Google API क्लाइंट लाइब्रेरी का इस्तेमाल करके, ब्राउज़र मेमोरी में ऐक्सेस टोकन को कुछ समय के लिए सेव करने और लाइब्रेरी को Google API (एपीआई) कॉल करने की अनुमति देने के लिए, gapi.client.SetToken() का इस्तेमाल करें.