অ্যান্ড্রয়েডে ব্যবহারকারীর ডেটা অ্যাক্সেস অনুমোদন করুন

প্রমাণীকরণ নিশ্চিত করে যে কেউ কে, এবং সাধারণত ব্যবহারকারী সাইন-আপ বা সাইন-ইন হিসাবে উল্লেখ করা হয়। অনুমোদন হল ডেটা বা সংস্থানগুলিতে অ্যাক্সেস প্রদান বা প্রত্যাখ্যান করার প্রক্রিয়া। উদাহরণস্বরূপ, আপনার অ্যাপ ব্যবহারকারীর Google ড্রাইভ অ্যাক্সেস করার জন্য আপনার ব্যবহারকারীর সম্মতির অনুরোধ করে।

সাইট বা অ্যাপের প্রয়োজনের ভিত্তিতে প্রমাণীকরণ এবং অনুমোদন কল দুটি পৃথক এবং স্বতন্ত্র প্রবাহ হওয়া উচিত।

যদি আপনার অ্যাপে এমন বৈশিষ্ট্য থাকে যা Google API ডেটা ব্যবহার করতে পারে, কিন্তু আপনার অ্যাপের মূল বৈশিষ্ট্যগুলির অংশ হিসাবে প্রয়োজন হয় না, তাহলে আপনার অ্যাপটিকে এমনভাবে ডিজাইন করা উচিত যাতে API ডেটা অ্যাক্সেস করা যায় না। উদাহরণস্বরূপ, ব্যবহারকারী যখন ড্রাইভ অ্যাক্সেস মঞ্জুর না করে তখন আপনি সম্প্রতি সংরক্ষিত ফাইলগুলির একটি তালিকা লুকাতে পারেন৷

আপনার সেই স্কোপগুলিতে অ্যাক্সেসের অনুরোধ করা উচিত যা আপনাকে Google API গুলি অ্যাক্সেস করতে হবে শুধুমাত্র তখনই যখন ব্যবহারকারী এমন একটি ক্রিয়া সম্পাদন করে যার জন্য একটি নির্দিষ্ট API অ্যাক্সেসের প্রয়োজন হয়৷ উদাহরণস্বরূপ, যখনই ব্যবহারকারী একটি "ড্রাইভে সংরক্ষণ করুন" বোতামে ট্যাপ করে তখনই আপনাকে ব্যবহারকারীর ড্রাইভ অ্যাক্সেস করার অনুমতির অনুরোধ করা উচিত৷

প্রমাণীকরণ থেকে অনুমোদন আলাদা করে, আপনি অপ্রতিরোধ্য নতুন ব্যবহারকারীদের এড়াতে পারেন, বা ব্যবহারকারীদের কেন নির্দিষ্ট অনুমতি চাওয়া হচ্ছে তা নিয়ে বিভ্রান্ত করতে পারেন।

Google পরিচয় পরিষেবাগুলিতে, SignInClient ব্যবহার করে প্রমাণীকরণ করা হয়। Google দ্বারা সংরক্ষিত ব্যবহারকারীর ডেটাতে অ্যাক্সেস প্রয়োজন এমন ক্রিয়াগুলিকে অনুমোদনের জন্য, আমরা AuthorizationClient ব্যবহার করার সুপারিশ করি৷

ব্যবহারকারীর ক্রিয়াকলাপের জন্য প্রয়োজনীয় অনুমতির অনুরোধ করা

যখনই একজন ব্যবহারকারী এমন একটি কাজ করেন যার জন্য অতিরিক্ত সুযোগের প্রয়োজন হয়, তখন AuthorizationClient.authorize() কল করুন।

উদাহরণস্বরূপ, যদি একজন ব্যবহারকারী এমন একটি কাজ করেন যার জন্য তাদের ড্রাইভ অ্যাপ স্টোরেজ অ্যাক্সেসের প্রয়োজন হয়, তাহলে নিম্নলিখিতগুলি করুন:

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);
  }
}