최상의 사용자 환경을 제공하려면 사용자를 처음 로그인할 때 최대한 적은 범위를 요청해야 합니다. 앱의 핵심 기능이 Google 서비스에 연결되어 있지 않은 경우 로그인 시 필요한 것은 GoogleSignInOptions.DEFAULT_SIGN_IN 구성뿐인 경우가 많습니다.
앱에 Google API 데이터를 활용할 수 있지만 앱의 핵심 기능의 일부로 필요하지 않은 기능이 있는 경우 API 데이터에 액세스할 수 없는 경우를 원활하게 처리할 수 있도록 앱을 설계해야 합니다. 예를 들어 사용자가 Drive 액세스 권한을 부여하지 않은 경우 최근에 저장된 파일 목록을 숨길 수 있습니다.
사용자가 특정 API에 액세스해야 하는 작업을 실행할 때만 Google API에 액세스하는 데 필요한 추가 범위를 요청해야 합니다. 예를 들어 사용자가 'Drive에 저장' 버튼을 처음 탭할 때만 사용자의 Drive에 액세스할 수 있는 권한을 요청할 수 있습니다.
이 기법을 사용하면 신규 사용자에게 부담을 주거나 특정 권한을 요청하는 이유에 관해 사용자를 혼란스럽게 하지 않을 수 있습니다.
사용자 작업에 필요한 권한 요청
사용자가 로그인 시 요청되지 않은 범위가 필요한 작업을 실행할 때마다 GoogleSignIn.hasPermissions를 호출하여 사용자가 이미 필요한 권한을 부여했는지 확인합니다. 그렇지 않으면 GoogleSignIn.requestPermissions를 호출하여 사용자에게 필요한 추가 범위를 요청하는 활동을 실행합니다.
예를 들어 사용자가 Drive 앱 저장소에 액세스해야 하는 작업을 실행하는 경우 다음을 실행합니다.
GoogleSignInOptionsExtension를 hasPermissions 및 requestPermissions에 전달하여 더 편리하게 권한 집합을 확인하고 획득할 수도 있습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","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-27(UTC)"],[],[],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."]]