पुष्टि करने से पता चलता है कि कोई व्यक्ति कौन है. इसे आम तौर पर, उपयोगकर्ता के लिए साइन-अप या साइन-इन कहा जाता है. अनुमति देने का मतलब है, डेटा या संसाधनों का ऐक्सेस देना या अस्वीकार करना. उदाहरण के लिए, आपका ऐप्लिकेशन, उपयोगकर्ता की Google Drive को ऐक्सेस करने के लिए आपके उपयोगकर्ता से सहमति मांगता है.
पुष्टि करने और अनुमति देने से जुड़े कॉल, साइट या ऐप्लिकेशन की ज़रूरतों के हिसाब से दो अलग-अलग और अलग-अलग फ़्लो होने चाहिए.
अगर आपके ऐप्लिकेशन में ऐसी सुविधाएं हैं जो Google API डेटा का इस्तेमाल कर सकती हैं, लेकिन वे आपके ऐप्लिकेशन के मुख्य फ़ंक्शन के तौर पर ज़रूरी नहीं हैं, तो आपको अपने ऐप्लिकेशन को इस तरह डिज़ाइन करना चाहिए कि वह एपीआई डेटा को ऐक्सेस न कर पाने की स्थिति में भी काम कर सके. उदाहरण के लिए, जब उपयोगकर्ता ने Drive का ऐक्सेस न दिया हो, तब हाल ही में सेव की गई फ़ाइलों की सूची छिपाई जा सकती है.
आपको उन दायरों के ऐक्सेस का अनुरोध सिर्फ़ तब करना चाहिए, जब उपयोगकर्ता कोई ऐसी कार्रवाई करता हो जिसके लिए किसी खास एपीआई को ऐक्सेस करने की ज़रूरत हो. साथ ही, उन दायरों के ऐक्सेस का अनुरोध करना चाहिए जिनके लिए आपको Google API को ऐक्सेस करने की ज़रूरत है. उदाहरण के लिए, जब भी उपयोगकर्ता "Drive में सेव करें" बटन पर टैप करे, तो आपको उपयोगकर्ता की Drive को ऐक्सेस करने की अनुमति मांगनी चाहिए.
पुष्टि करने की प्रक्रिया को पुष्टि करने से अलग करके, नए उपयोगकर्ताओं को परेशान करने से रोका जा सकता है. इसके अलावा, उपयोगकर्ताओं को यह समझने में भी परेशानी होने से बचा जा सकता है कि उनसे कुछ अनुमतियां क्यों मांगी जा रही हैं.
Google की पहचान सेवाओं में, पुष्टि करने के लिए SignInClient का इस्तेमाल किया जाता है. हमारा सुझाव है कि जिन कार्रवाइयों को Google पर सेव किए गए, उपयोगकर्ता के डेटा का ऐक्सेस चाहिए उन्हें अनुमति देने के लिए, हम ऑथराइज़ेशन क्लाइंट का इस्तेमाल करें.
उपयोगकर्ता की कार्रवाइयों के लिए ज़रूरी अनुमतियों के लिए अनुरोध करना
जब भी कोई उपयोगकर्ता ऐसी कार्रवाई करता है जिसके लिए ज़्यादा दायरे की ज़रूरत होती है, तो
AuthorizationClient.authorize()
को कॉल करें.
उदाहरण के लिए, अगर कोई उपयोगकर्ता कोई ऐसी कार्रवाई करता है जिसके लिए उसके Drive ऐप्लिकेशन स्टोरेज के ऐक्सेस की ज़रूरत है, तो ये काम करें:
List<Scopes> requestedScopes = Arrays.asList(DriveScopes.DRIVE_APPDATA);
AuthorizationRequest authorizationRequest = AuthorizationRequest.builder().setRequestedScopes(requestedScopes).build();
Identity.getAuthorizationClient(this)
.authorize(builder.build())
.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);
}
}