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

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

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

आपको सिर्फ़ तब अतिरिक्त स्कोप का अनुरोध करना चाहिए, जब उपयोगकर्ता कोई ऐसी कार्रवाई करता है जिसके लिए किसी खास एपीआई को ऐक्सेस करने की ज़रूरत होती है. उदाहरण के लिए, हो सकता है कि आपको उपयोगकर्ता के 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 को GoogleSignInOptionsExtension और requestPermissions को पास करके भी, अनुमतियों के सेट की जांच की जा सकती है और उन्हें आसानी से हासिल किया जा सकता है.