사용자 데이터 또는 기타 리소스에 액세스하기 위한 사용자 권한을 요청할 때는 초기 요청에서 모든 범위를 미리 요청하거나 증분 승인을 사용하여 필요에 따라 범위를 요청할 수 있습니다.
증분 승인을 사용하면 앱은 처음에 앱을 시작하는 데 필요한 범위만 요청한 다음, 사용자에게 요청하는 이유를 식별하는 맥락에서 새 권한이 필요하면 추가 범위를 요청합니다.
예를 들어 앱에서 사용자가 음악 재생목록을 Google Drive에 저장할 수 있다고 가정해 보겠습니다. 앱은 로그인 시 기본 사용자 정보를 요청하고 나중에 사용자가 첫 번째 재생목록을 저장할 준비가 되면 Google Drive 권한만 요청할 수 있습니다.
동의 화면이 부담스러워서 사용자가 로그인하지 않거나 특정 권한을 요청하는 이유를 혼동하고 있다고 생각되면 이 기법을 사용하세요.
다음 안내는 웹용이며 클라이언트 측 로그인 버튼 추가 안내인 Google 2.0 로그인 버튼 빌드에서 파생되었습니다.
웹의 증분 인증에 관한 자세한 내용은 OAuth 2.0 문서를 참고하세요.
추가 범위 요청
로그인 시 앱은 로그인 범위 profile와 앱 작동에 필요한 다른 모든 초기 범위로 구성된 '기본' 범위를 요청합니다.
나중에 사용자가 추가 범위가 필요한 작업을 실행하려고 하면 앱에서 이러한 추가 범위를 요청하고 사용자는 동의 화면에서 새 범위만 승인합니다.
auth2=gapi.auth2.init({client_id:'CLIENT_ID.apps.googleusercontent.com',cookiepolicy:'single_host_origin',/** Default value **/scope:'profile'});/** Base scope **/
2단계: 추가 범위 요청
추가 범위가 필요한 경우 추가하려는 범위로 옵션 빌더를 생성한 다음 user.grant({scope:
[OPTIONS BUILDER]}).then(successFunction, failFunction);를 호출하여 범위를 요청합니다.
[null,null,["최종 업데이트: 2025-07-25(UTC)"],[[["\u003cp\u003eThe Google Sign-In JavaScript Platform Library is deprecated; developers should migrate to the Google Identity Services library for user authorization and access tokens.\u003c/p\u003e\n"],["\u003cp\u003eFedCM APIs will become mandatory for the Google Sign-In library, requiring developers to conduct an impact assessment.\u003c/p\u003e\n"],["\u003cp\u003eIncremental authorization allows developers to request user permissions in stages, starting with basic scopes and requesting additional scopes as needed, improving user experience.\u003c/p\u003e\n"],["\u003cp\u003eTo implement incremental authorization, request the 'profile' scope initially and add further scopes like 'email' or 'drive' using \u003ccode\u003egapi.auth2.SigninOptionsBuilder\u003c/code\u003e and \u003ccode\u003euser.grant()\u003c/code\u003e when required.\u003c/p\u003e\n"]]],[],null,["# Requesting additional permissions\n\n| **Warning:** The Google Sign-In library optionally uses FedCM APIs, and their use will become a requirement. [Conduct an impact assessment](/identity/sign-in/web/gsi-with-fedcm) to confirm that user sign-in continues to function as expected. \n|\n| Support for the Google Sign-In library is deprecated, see the [Deprecation and Sunset](/identity/sign-in/web/deprecation-and-sunset) guide for more.\n| **Warning:** We are [discontinuing the Google Sign-In JavaScript Platform Library for web](https://developers.googleblog.com/2021/08/gsi-jsweb-deprecation.html). For user authorization and to obtain access tokens for use with Google APIs, use the newer [Google Identity Services JavaScript library](/identity/oauth2/web/guides/overview) instead. For existing implementations see [Migrate to Google Identity Services](/identity/oauth2/web/guides/migration-to-gis).\n\nWhen requesting user permission to access user data or other\nresources, you can request all scopes up-front in the initial request or\nrequest scopes only as needed, using *incremental authorization*.\nUsing incremental authorization, your app initially requests only the scopes\nrequired to start your app, then requests additional scopes as new permissions\nare required, in a context that identifies the reason for the request to the\nuser.\n\nFor example, suppose your app lets users save music playlists\nto Google Drive; your app can request basic user information at sign-in,\nand later, when the user is ready to save their first playlist,\nask only for Google Drive permissions.\n\nUse this technique if you suspect users are not signing in because your\nconsent screen is overwhelming, or are confused about why they are being asked\nfor certain permissions.\nThe following instructions are for the web, and are derived from the\ninstructions for adding a client-side sign-in button:\n[Building a Google 2.0 Sign-In button](/identity/sign-in/web/build-button).\nYou can read more about incremental authorization for the web in the\n[OAuth 2.0 documentation](/identity/protocols/oauth2/web-server#incrementalAuth).\n\nRequesting additional scopes\n----------------------------\n\nAt sign-in, your app requests \"base\" scopes, consisting of the sign-in scope\n`profile` plus any other initial scopes your app requires for operation.\nLater, when the user wants to perform an action that requires additional\nscopes, your app requests those additional scopes and the user authorizes only\nthe new scopes from a consent screen.\n\n### Step 1: Request base scopes\n\nRequest the base scope `profile` when you initialize Google Sign-In. This\nstep is included in\n[Building a Google 2.0 Sign-In button](/identity/sign-in/web/build-button). \n\n auth2 = gapi.auth2.init({\n client_id: 'CLIENT_ID.apps.googleusercontent.com',\n cookiepolicy: 'single_host_origin', /** Default value **/\n scope: 'profile' }); /** Base scope **/\n\n### Step 2: Request additional scopes\n\nWherever additional scopes are needed, request them by constructing an options\nbuilder with the scopes you want to add and then calling `user.grant({scope:\n[OPTIONS BUILDER]}).then(successFunction, failFunction);`: \n\n const options = new gapi.auth2.SigninOptionsBuilder();\n options.setScope('email https://www.googleapis.com/auth/drive');\n\n googleUser = auth2.currentUser.get();\n googleUser.grant(options).then(\n function(success){\n console.log(JSON.stringify({message: \"success\", value: success}));\n },\n function(fail){\n alert(JSON.stringify({message: \"fail\", value: fail}));\n });"]]