अतिरिक्त अनुमतियों का अनुरोध किया जा रहा है

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

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

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

अतिरिक्त दायरों का अनुरोध किया जा रहा है

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

पहला चरण: बुनियादी स्कोप का अनुरोध करना

'Google साइन इन' शुरू करते समय, बेस स्कोप profile का अनुरोध करें. यह चरण Google 2.0 साइन-इन बटन बनाने में शामिल है.

auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    cookiepolicy: 'single_host_origin', /** Default value **/
    scope: 'profile' });                /** Base scope **/

दूसरा चरण: अतिरिक्त दायरों का अनुरोध करना

जहां भी अतिरिक्त स्कोप की ज़रूरत हो, उन स्कोप के साथ विकल्प बिल्डर बनाकर उनका अनुरोध करें. इसके लिए, आपको स्कोप जोड़ने होंगे. इसके बाद, user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction); को कॉल करें:

const option = new gapi.auth2.SigninOptionsBuilder();
option.setScope('email https://www.googleapis.com/auth/drive');

googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
    function(success){
      console.log(JSON.stringify({message: "success", value: success}));
    },
    function(fail){
      alert(JSON.stringify({message: "fail", value: fail}));
    });