Android पर उपयोगकर्ता के डेटा को ऐक्सेस करने की अनुमति देना

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

पुष्टि और अनुमति वाले कॉल दो अलग-अलग और अलग-अलग होने चाहिए जो साइट या ऐप्लिकेशन की ज़रूरतों के हिसाब से तय होते हैं.

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

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

पुष्टि करने की प्रोसेस को अलग-अलग करके, पुष्टि करने की प्रोसेस को अलग किया जा सकता है. या उपयोगकर्ताओं को यह समझने में भ्रम हो रहा है कि उनसे खास जानकारी पाने के लिए क्यों कहा जा रहा है अनुमतियां दी हैं.

Google Identity Services में, पुष्टि करने के लिए SignInClient. जिन कार्रवाइयों को Google पर सेव किए गए, उपयोगकर्ता के डेटा को ऐक्सेस करने की ज़रूरत होती है उन्हें अनुमति देने के लिए, हम AuthorizationClient का इस्तेमाल करने का सुझाव देता है.

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

जब भी कोई उपयोगकर्ता कोई ऐसी कार्रवाई करता है जिसके लिए अतिरिक्त दायरे की ज़रूरत होती है, तो कॉल करें AuthorizationClient.authorize().

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

List<Scopes> requestedScopes = Arrays.asList(DriveScopes.DRIVE_APPDATA);
AuthorizationRequest authorizationRequest = AuthorizationRequest.builder().setRequestedScopes(requestedScopes).build();
Identity.getAuthorizationClient(this)
        .authorize(authorizationRequest)
        .addOnSuccessListener(
            authorizationResult -> {
              if (authorizationResult.hasResolution()) {
                    // Access needs to be granted by the user
                PendingIntent pendingIntent = authorizationResult.getPendingIntent();
                try {
startIntentSenderForResult(pendingIntent.getIntentSender(),
REQUEST_AUTHORIZE, null, 0, 0, 0, null);
                } catch (IntentSender.SendIntentException e) {
                Log.e(TAG, "Couldn't start Authorization UI: " + e.getLocalizedMessage());
                }
              } else {
            // Access already granted, continue with user action
                saveToDriveAppFolder(authorizationResult);
              }
            })
        .addOnFailureListener(e -> Log.e(TAG, "Failed to authorize", e));

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

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == MainActivity.REQUEST_AUTHORIZE) {
    AuthorizationResult authorizationResult = Identity.getAuthorizationClient(this).getAuthorizationResultFromIntent(data);
    saveToDriveAppFolder(authorizationResult);
  }
}