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

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

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

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

इस तकनीक का इस्तेमाल करके, नए उपयोगकर्ताओं को बहुत ज़्यादा परेशान होने से बचाया जा सकता है. साथ ही, उपयोगकर्ताओं को यह भ्रम भी होने से बचाया जा सकता है कि उनसे कुछ अनुमतियां क्यों मांगी जा रही हैं.

उपयोगकर्ता की कार्रवाइयों के लिए ज़रूरी अनुमतियों का अनुरोध करना

जब भी कोई उपयोगकर्ता ऐसी कार्रवाई करता है जिसके लिए ऐसे दायरे की ज़रूरत होती है जिसका अनुरोध साइन इन करने के दौरान नहीं किया जाता, तो GoogleSignIn.hasPermissions पर कॉल करके यह देखें कि उपयोगकर्ता ने पहले ही ज़रूरी अनुमतियां दी हैं या नहीं. अगर ऐसा नहीं है, तो GoogleSignIn.requestPermissions को कॉल करके, ऐसी गतिविधि शुरू करें जो उपयोगकर्ता से अतिरिक्त ज़रूरी दायरों का अनुरोध करे.

उदाहरण के लिए, अगर कोई उपयोगकर्ता कोई ऐसी कार्रवाई करता है जिसके लिए Drive ऐप्लिकेशन के स्टोरेज के ऐक्सेस की ज़रूरत है, तो ये काम करें:

if (!GoogleSignIn.hasPermissions(
        GoogleSignIn.getLastSignedInAccount(getActivity()),
        Drive.SCOPE_APPFOLDER)) {
    GoogleSignIn.requestPermissions(
            MyExampleActivity.this,
            RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION,
            GoogleSignIn.getLastSignedInAccount(getActivity()),
            Drive.SCOPE_APPFOLDER);
} else {
    saveToDriveAppFolder();
}

अपनी गतिविधि के onActivityResult कॉलबैक में, यह देखा जा सकता है कि ज़रूरी अनुमतियां मिली हैं या नहीं. अगर ज़रूरी अनुमतियां मिली हैं, तो उपयोगकर्ता की कार्रवाई को अंजाम दें.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION == requestCode) {
            saveToDriveAppFolder();
        }
    }
}

अनुमतियों के सेट की ज़्यादा आसानी से जांच करने और उन्हें हासिल करने के लिए, hasPermissions और requestPermissions को GoogleSignInOptionsExtension भी पास किया जा सकता है.