درخواست دامنه های اضافی

برای بهترین تجربه کاربری، هنگام ورود به سیستم اولیه کاربران، باید تا حد امکان دامنه کمتری را درخواست کنید. اگر عملکرد اصلی برنامه شما به یک سرویس Google مرتبط نیست، پیکربندی GoogleSignInOptions.DEFAULT_SIGN_IN اغلب تنها چیزی است که هنگام ورود به سیستم نیاز دارید.

اگر برنامه شما دارای ویژگی هایی است که می تواند از داده های API Google استفاده کند، اما به عنوان بخشی از عملکرد اصلی برنامه شما مورد نیاز نیست، باید برنامه خود را به گونه ای طراحی کنید که بتوانید مواردی را که داده های API در دسترس نیست، به خوبی مدیریت کنید. برای مثال، زمانی که کاربر به Drive اجازه دسترسی نداده است، ممکن است فهرستی از فایل‌های اخیراً ذخیره شده را پنهان کنید.

فقط زمانی که کاربر اقدامی را انجام می‌دهد که نیاز به دسترسی به یک API خاص دارد، باید دامنه‌های بیشتری را درخواست کنید که برای دسترسی به APIهای Google نیاز دارید. به عنوان مثال، ممکن است فقط زمانی اجازه دسترسی به Drive کاربر را درخواست کنید که کاربر برای اولین بار روی دکمه "Save to 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 بفرستید تا مجموعه‌ای از مجوزها را راحت‌تر بررسی کرده و به دست آورید.