Cómo solicitar permisos adicionales

Cuando solicitas permiso del usuario para acceder a sus datos o a otros recursos, puedes solicitar todos los alcances por adelantado en la solicitud inicial o solo según sea necesario, mediante 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 están confundidos acerca de por qué se les solicitan ciertos permisos. Las siguientes instrucciones son para la Web y 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

Cuando accedes, tu app solicita permisos "base", que consisten en el alcance de acceso profile y cualquier otro alcance inicial que la app requiera para su funcionamiento. 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 base

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 permisos adicionales, solicítalos construyendo un compilador de opciones con los permisos que desees agregar y, luego, llamando 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}));
    });