Cómo solicitar permisos adicionales

Cuando solicites el permiso del usuario para acceder a los datos del usuario o a otros recursos, puedes solicitar todos los permisos por adelantado en la solicitud inicial o solo según sea necesario, mediante la autorización incremental. Con la autorización incremental, tu app inicialmente solicita solo los permisos necesarios para iniciarla y, luego, solicita alcances adicionales a medida que se requieren 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; 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, solo pedir permisos para Google Drive.

Usa esta técnica si sospechas que los usuarios no acceden porque tu pantalla de consentimiento es abrumadora o no sabes 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

Durante el acceso, tu app solicita permisos "base", que incluyen el permiso de acceso profile además de cualquier otro alcance inicial que la app requiera para el funcionamiento. Luego, cuando el usuario quiera realizar una acción que requiera permisos adicionales, tu app los solicitará, y el usuario solo autorizará los nuevos desde una pantalla de consentimiento.

Paso 1: Solicita permisos básicos

Solicita el permiso 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 necesites permisos adicionales, para solicitarlos, construye un compilador de opciones con los permisos que quieras agregar y, luego, llama a 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}));
    });