Cuando solicites el permiso del usuario para acceder a sus datos o a otros recursos, puedes solicitar todos los permisos por adelantado en la solicitud inicial o solicitar permisos solo cuando sea necesario, con la autorización incremental. Mediante el uso de la autorización incremental, tu app solicita inicialmente solo los alcances necesarios para iniciarla y, luego, solicita alcances adicionales a medida que se requieran permisos nuevos, en un contexto que identifica el motivo de la solicitud al usuario.
Por ejemplo, supongamos que tu app permite que los usuarios guarden playlists de música en Google Drive. Tu app puede solicitar información básica del usuario durante el acceso y, más adelante, cuando el usuario esté listo para guardar su primera playlist, solicitar solo permisos de Google Drive.
Usa esta técnica si sospechas que los usuarios no acceden porque tu pantalla de consentimiento es abrumadora o si no saben por qué se les solicitan ciertos permisos. Las siguientes instrucciones son para la Web y se derivan de las instrucciones para agregar un botón de acceso del cliente: Cómo compilar un botón de Acceso con Google 2.0. Puedes obtener más información sobre la autorización incremental para la Web en la documentación de OAuth 2.0.
Cómo solicitar permisos adicionales
Durante el acceso, tu app solicita ámbitos "base", que consisten en el ámbito de acceso profile
más cualquier otro ámbito inicial que tu app requiera para funcionar.
Luego, cuando el usuario quiera realizar una acción que requiera permisos adicionales, tu app solicitará estos permisos adicionales, y el usuario solo autorizará los permisos nuevos en una pantalla de consentimiento.
Paso 1: Solicita permisos básicos
Solicita el alcance base profile
cuando inicialices el Acceso con Google. Este paso se incluye en Cómo compilar un botón de Acceso con Google 2.0.
auth2 = gapi.auth2.init({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
cookiepolicy: 'single_host_origin', /** Default value **/
scope: 'profile' }); /** Base scope **/
Paso 2: Solicita permisos adicionales
Cuando se necesiten ámbitos adicionales, consígalos construyendo un compilador de opciones con los ámbitos que deseas agregar y, luego, llama a 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}));
});