Запрос дополнительных разрешений

При запросе разрешения пользователя на доступ к пользовательским данным или другим ресурсам вы можете запросить все области заранее в первоначальном запросе или запрашивать области только по мере необходимости, используя добавочную авторизацию . При использовании добавочной авторизации ваше приложение сначала запрашивает только области, необходимые для запуска вашего приложения, а затем запрашивает дополнительные области по мере необходимости новых разрешений в контексте, который определяет причину запроса пользователя.

Например, предположим, что ваше приложение позволяет пользователям сохранять списки воспроизведения музыки на Google Диске; ваше приложение может запрашивать основную информацию о пользователе при входе в систему, а позже, когда пользователь будет готов сохранить свой первый плейлист, запрашивать только разрешения Google Диска.

Используйте этот метод, если вы подозреваете, что пользователи не входят в систему из-за того, что экран согласия перегружен, или не понимаете, почему у них запрашиваются определенные разрешения. Следующие инструкции предназначены для Интернета и основаны на инструкциях по добавлению кнопки входа на стороне клиента: Создание кнопки входа в Google 2.0 . Подробнее об инкрементальной авторизации для веба можно прочитать в документации OAuth 2.0 .

Запрос дополнительных областей

При входе ваше приложение запрашивает «базовые» области, состоящие из profile области входа и любых других начальных областей, необходимых вашему приложению для работы. Позже, когда пользователь захочет выполнить действие, требующее дополнительных областей, ваше приложение запрашивает эти дополнительные области, и пользователь разрешает только новые области на экране согласия.

Шаг 1. Запросите базовые области действия

Запросите profile базовой области при инициализации входа в Google. Этот шаг включен в раздел «Создание кнопки входа в Google 2.0» .

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

const option = new gapi.auth2.SigninOptionsBuilder();
option.setScope('email https://www.googleapis.com/auth/drive');

googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
    function(success){
      console.log(JSON.stringify({message: "success", value: success}));
    },
    function(fail){
      alert(JSON.stringify({message: "fail", value: fail}));
    });