उपयोगकर्ता के डेटा या अन्य संसाधनों को ऐक्सेस करने की अनुमति मांगते समय, शुरुआती अनुरोध में सभी स्कोप का अनुरोध किया जा सकता है. इसके अलावा, बढ़ती हुई अनुमति का इस्तेमाल करके, सिर्फ़ ज़रूरत के हिसाब से स्कोप का अनुरोध किया जा सकता है. ज़रूरत के मुताबिक अनुमति का इस्तेमाल करके, आपका ऐप्लिकेशन शुरू में सिर्फ़ उन स्कोप का अनुरोध करता है जो ऐप्लिकेशन को शुरू करने के लिए ज़रूरी हैं. इसके बाद, नई अनुमतियों की ज़रूरत पड़ने पर, वह अन्य स्कोप का अनुरोध करता है. यह अनुरोध, उपयोगकर्ता को बताए गए संदर्भ में किया जाता है.
उदाहरण के लिए, मान लें कि आपका ऐप्लिकेशन, उपयोगकर्ताओं को Google Drive में संगीत प्लेलिस्ट सेव करने की सुविधा देता है. ऐसे में, आपका ऐप्लिकेशन साइन इन करने के दौरान उपयोगकर्ता की बुनियादी जानकारी का अनुरोध कर सकता है. इसके बाद, जब उपयोगकर्ता अपनी पहली प्लेलिस्ट सेव करने के लिए तैयार हो, तब ऐप्लिकेशन सिर्फ़ Google Drive की अनुमतियों का अनुरोध कर सकता है.
अगर आपको लगता है कि सहमति वाली स्क्रीन बहुत लंबी होने की वजह से उपयोगकर्ता साइन इन नहीं कर रहे हैं या उन्हें इस बात की जानकारी नहीं है कि उनसे कुछ अनुमतियां क्यों मांगी जा रही हैं, तो इस तकनीक का इस्तेमाल करें. यहां दिए गए निर्देश वेब के लिए हैं. ये क्लाइंट-साइड साइन-इन बटन जोड़ने के निर्देशों से लिए गए हैं: Google 2.0 साइन-इन बटन बनाना. वेब के लिए, धीरे-धीरे अनुमति देने की सुविधा के बारे में ज़्यादा जानने के लिए, OAuth 2.0 दस्तावेज़ पढ़ें.
अतिरिक्त स्कोप का अनुरोध करना
साइन इन करने पर, आपका ऐप्लिकेशन "बेस" स्कोप का अनुरोध करता है. इसमें साइन इन स्कोपprofile
के साथ-साथ, ऐप्लिकेशन के काम करने के लिए ज़रूरी अन्य शुरुआती स्कोप भी शामिल होते हैं.
बाद में, जब उपयोगकर्ता को कोई ऐसी कार्रवाई करनी हो जिसके लिए ज़्यादा स्कोप की ज़रूरत होती है, तो आपका ऐप्लिकेशन उन ज़्यादा स्कोप का अनुरोध करता है. साथ ही, उपयोगकर्ता सहमति वाली स्क्रीन से सिर्फ़ नए स्कोप को अनुमति देता है.
पहला चरण: बुनियादी स्कोप का अनुरोध करना
Google Sign-In को शुरू करते समय, बुनियादी स्कोप 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 options = new gapi.auth2.SigninOptionsBuilder();
options.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}));
});