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

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

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

आपको सिर्फ़ Google API ऐक्सेस करने के लिए अतिरिक्त दायरों का अनुरोध करना चाहिए जब उपयोगकर्ता कोई ऐसी कार्रवाई करता है जिसके लिए किसी खास एपीआई का ऐक्सेस ज़रूरी होता है. इसके लिए उदाहरण के लिए, आप उपयोगकर्ता की डिस्क को ऐक्सेस करने की अनुमति का अनुरोध सिर्फ़ तब कर सकते हैं, जब उपयोगकर्ता "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();
        }
    }
}

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