При запросе разрешения пользователя на доступ к пользовательским данным или другим ресурсам вы можете запросить все области заранее в первоначальном запросе или запрашивать области только по мере необходимости, используя добавочную авторизацию . При использовании добавочной авторизации ваше приложение сначала запрашивает только те области, которые необходимы для запуска вашего приложения, а затем запрашивает дополнительные области по мере необходимости новых разрешений в контексте, который определяет причину запроса пользователя.
Например, предположим, что ваше приложение позволяет пользователям сохранять списки воспроизведения музыки на 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 options = new gapi.auth2.SigninOptionsBuilder();
options.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}));
});