Cómo solicitar permisos adicionales

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. Con la autorización incremental, tu app inicialmente solicita solo los permisos necesarios para iniciarse y, luego, solicita permisos adicionales a medida que se necesitan, 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 cuando accede y, más adelante, cuando el usuario esté listo para guardar su primera playlist, solicitar solo los permisos de Google Drive.

Usa esta técnica si sospechas que los usuarios no inician sesión porque tu pantalla de consentimiento resulta abrumadora o se sienten confundidos por qué se les solicita 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.

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. Más adelante, cuando el usuario quiera realizar una acción que requiera permisos adicionales, tu app solicitará esos permisos adicionales y el usuario solo autorizará los nuevos permisos desde 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}));
    });