با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
برای بهترین تجربه کاربری، هنگام ورود به سیستم اولیه کاربران، باید تا حد امکان دامنه کمتری را درخواست کنید. اگر عملکرد اصلی برنامه شما به یک سرویس Google مرتبط نیست، پیکربندی GoogleSignInOptions.DEFAULT_SIGN_IN اغلب تنها چیزی است که هنگام ورود به سیستم نیاز دارید.
اگر برنامه شما دارای ویژگی هایی است که می تواند از داده های API Google استفاده کند، اما به عنوان بخشی از عملکرد اصلی برنامه شما مورد نیاز نیست، باید برنامه خود را به گونه ای طراحی کنید که بتوانید مواردی را که داده های API در دسترس نیست، به خوبی مدیریت کنید. برای مثال، زمانی که کاربر به Drive اجازه دسترسی نداده است، ممکن است فهرستی از فایلهای اخیراً ذخیره شده را پنهان کنید.
فقط زمانی که کاربر اقدامی را انجام میدهد که نیاز به دسترسی به یک API خاص دارد، باید دامنههای بیشتری را درخواست کنید که برای دسترسی به APIهای Google نیاز دارید. به عنوان مثال، ممکن است فقط زمانی اجازه دسترسی به Drive کاربر را درخواست کنید که کاربر برای اولین بار روی دکمه "Save to Drive" ضربه بزند.
با استفاده از این تکنیک، میتوانید از تحت فشار قرار دادن کاربران جدید، یا سردرگمی کاربران در مورد اینکه چرا از آنها مجوزهای خاصی درخواست میشود، جلوگیری کنید.
درخواست مجوزهای مورد نیاز اقدامات کاربر
هر زمان که کاربر اقدامی را انجام داد که به محدوده ای نیاز دارد که هنگام ورود به سیستم درخواست نشده است، با GoogleSignIn.hasPermissions تماس بگیرید تا بررسی کنید آیا کاربر قبلاً مجوزهای لازم را داده است یا خیر. اگر نه، با GoogleSignIn.requestPermissions تماس بگیرید تا فعالیتی را راه اندازی کنید که دامنه های مورد نیاز اضافی را از کاربر درخواست می کند.
به عنوان مثال، اگر کاربر عملی را انجام میدهد که نیاز به دسترسی به فضای ذخیرهسازی برنامه Drive خود دارد، موارد زیر را انجام دهید:
در پاسخ به تماس onActivityResult فعالیت خود، می توانید بررسی کنید که آیا مجوزهای لازم با موفقیت به دست آمده اند یا خیر، و در این صورت، اقدام کاربر را انجام دهید.
همچنین میتوانید یک GoogleSignInOptionsExtension به hasPermissions و requestPermissions بفرستید تا مجموعهای از مجوزها را راحتتر بررسی کرده و به دست آورید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Request Additional Scopes\n\n| **Warning:**\n|\n| **The Google Sign-In for Android API is outdated and no longer supported.**\n| To ensure the continued security and usability of your app, [migrate your Sign in with\n| Google implementation to Credential Manager](/identity/sign-in/credential-manager-siwg) today. Credential Manager\n| supports passkey, password, and federated identity authentication (such as\n| Sign-in with Google), stronger security, and a more consistent user\n| experience.\n|\n| **For Wear developers:** Credential Manager will be supported in Wear OS\n| 5.1 and later on selected watches. Developers actively supporting Wear OS 3, 4\n| and 5.0 devices with Sign in with Google should continue using Google Sign-in\n| for Android for your Wear applications. Sign in with Google support will be\n| available on Credential Manager APIs for these versions of WearOS at a later\n| date.\n| **Warning:** This page is out of date, refer to [Authorize access to Google user data](/identity/authorization) for the latest best practice.\n\nFor the best user experience, you should request as few scopes as possible when\ninitially signing in users. If your app's core functionality isn't tied to a\nGoogle service, the `GoogleSignInOptions.DEFAULT_SIGN_IN` configuration is often\nall you need at sign-in.\n\nIf your app has features that can make use of Google API data, but are not\nrequired as part of your app's core functionality, you should design your app to\nbe able to gracefully handle cases when API data isn't accessible. For example,\nyou might hide a list of recently saved files when the user hasn't granted Drive\naccess.\n\nYou should request additional scopes that you need to access Google APIs only\nwhen the user performs an action that requires access to a particular API. For\nexample, you might request permission to access the user's Drive only when the\nuser taps a \"Save to Drive\" button for the first time.\n\nBy using this technique, you can avoid overwhelming new users, or confusing\nusers as to why they are being asked for certain permissions.\n\nRequest permissions required by user actions\n--------------------------------------------\n\nWhenever a user performs an action that requires a scope that isn't requested at\nsign-in, call `GoogleSignIn.hasPermissions` to check if the user has already\ngranted the required permissions. If not, call `GoogleSignIn.requestPermissions`\nto launch an activity that requests the additional required scopes from the\nuser.\n\nFor example, if a user performs an action that requires access to their Drive\napp storage, do the following: \n\n if (!GoogleSignIn.hasPermissions(\n GoogleSignIn.getLastSignedInAccount(getActivity()),\n Drive.SCOPE_APPFOLDER)) {\n GoogleSignIn.requestPermissions(\n MyExampleActivity.this,\n RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION,\n GoogleSignIn.getLastSignedInAccount(getActivity()),\n Drive.SCOPE_APPFOLDER);\n } else {\n saveToDriveAppFolder();\n }\n\nIn your activity's `onActivityResult` callback, you can check if the required\npermissions were successfully acquired, and if so, carry out the user action. \n\n @Override\n public void onActivityResult(int requestCode, int resultCode, Intent data) {\n super.onActivityResult(requestCode, resultCode, data);\n if (resultCode == Activity.RESULT_OK) {\n if (RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION == requestCode) {\n saveToDriveAppFolder();\n }\n }\n }\n\nYou can also pass a `GoogleSignInOptionsExtension` to `hasPermissions` and\n`requestPermissions` to check for and acquire a set of permissions more\nconveniently."]]