Solicitar permisos adicionales

Al solicitar permiso de usuario para acceder a los datos del usuario u otros recursos, puede solicitar todos los ámbitos por adelantado en la solicitud inicial o solicitar los ámbitos solo según sea necesario, mediante la autorización incremental . Con la autorización incremental, su aplicación inicialmente solicita solo los ámbitos necesarios para iniciar su aplicación, luego solicita ámbitos adicionales a medida que se requieren nuevos permisos, en un contexto que identifica el motivo de la solicitud al usuario.

Por ejemplo, suponga que su aplicación permite a los usuarios guardar listas de reproducción de música en Google Drive; su aplicación puede solicitar información básica del usuario al iniciar sesión y, más tarde, cuando el usuario esté listo para guardar su primera lista de reproducción, solicitar solo permisos de Google Drive.

Utilice esta técnica si sospecha que los usuarios no inician sesión porque su pantalla de consentimiento es abrumadora o están confundidos acerca de 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 inicio de sesión del lado del cliente: Creación de un botón de inicio de sesión de Google 2.0 . Puede leer más sobre la autorización incremental para la web en la documentación de OAuth 2.0 .

Solicitar ámbitos adicionales

Al iniciar sesión, su aplicación solicita ámbitos "base", que consisten en el profile ámbito de inicio de sesión más cualquier otro ámbito inicial que su aplicación requiera para su funcionamiento. Más tarde, cuando el usuario desea realizar una acción que requiere ámbitos adicionales, su aplicación solicita esos ámbitos adicionales y el usuario autoriza solo los nuevos ámbitos desde una pantalla de consentimiento.

Paso 1: Solicitar ámbitos base

Solicite el profile alcance base cuando inicialice el inicio de sesión de Google. Este paso se incluye en Creación de un botón de inicio de sesión de 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: Solicite ámbitos adicionales

Siempre que se necesiten ámbitos adicionales, solicítelos construyendo un generador de opciones con los ámbitos que desea agregar y luego llamando 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}));
    });