Migra desde el acceso con Google+

Pasos para minimizar el impacto de los cambios de alcance en los usuarios

  1. Si tu aplicación requiere la dirección de correo electrónico de un usuario autenticado y ya usaste profile.emails.read para ese fin, usa email.
  2. Obtén la aprobación de profile.emails.read con una solicitud de verificación aprobada. Consulta ¿Cómo envío una verificación?
  3. Revoca el token de usuario anterior al alcance que se quitará o quita el acceso a la aplicación por completo. Por ejemplo, se debe revocar un token con acceso a profile.emails.read. Te recomendamos que apliques la revocación mientras los usuarios están en tu aplicación para que puedas obtener su consentimiento de inmediato.
  4. Solicita a los usuarios que vuelvan a otorgar su consentimiento con el nuevo alcance, como email, sin profile.emails.read.
  5. Quita el permiso que se eliminará gradualmente de la configuración de la pantalla de consentimiento de OAuth de tus APIs de Google.

Los cambios que debes realizar para migrar tu sitio de Acceso con Google+ a Google Sign-In dependen del flujo de Acceso con Google+ que uses. Por lo general, la migración requiere que actualices el botón de acceso, los permisos solicitados y las instrucciones para recuperar información del perfil de Google.

Cuando actualices el botón de acceso, no hagas referencia a G+ ni uses el color rojo. Cumplir con nuestros lineamientos de desarrollo de la marca actualizados

La mayoría de las aplicaciones de Acceso con G+ solicitaban alguna combinación de los siguientes alcances: plus.login, plus.me y plus.profile.emails.read. Debes volver a asignar tus alcances de la siguiente manera:

Alcance anterior Nuevo permiso
plus.login profile
plus.me openid
plus.profile.emails.read email

Muchos implementadores de Acceso con Google+ usaron el flujo de código. Esto significa que las apps para Android, iOS o JavaScript obtienen un código de OAuth de Google, y el cliente lo vuelve a enviar al servidor, junto con la protección contra la falsificación de solicitudes entre sitios. Luego, el servidor valida el código y obtiene tokens de actualización y acceso para extraer información del perfil del usuario de la API de people.get.

Ahora, Google recomienda que solicites un token de ID y lo envíes desde tu cliente a tu servidor. Los tokens de ID tienen protecciones contra la falsificación entre sitios integradas y también se pueden verificar de forma estática en tu servidor, lo que evita una llamada a la API adicional para obtener información del perfil del usuario de los servidores de Google. Sigue las instrucciones para validar los tokens de ID en tu servidor.

Si aún prefieres usar el flujo de código para obtener información del perfil, puedes hacerlo. Una vez que tu servidor tenga un token de acceso, deberás obtener información del perfil del usuario de los extremos userinfo especificados en nuestro documento de descubrimiento de Acceso. La respuesta de la API tiene un formato diferente al de la respuesta del perfil de Google+, por lo que debes actualizar el análisis al nuevo formato.

Cómo migrar un botón de acceso HTML

Si incluiste un botón de Acceso con Google+ en tu página asignando la clase g-signin a un elemento, realiza los siguientes cambios:

  • Cuando especifiques tu ID de cliente, ya sea en una etiqueta <meta>, un atributo data- o un objeto de parámetros, cambia la cadena clientid a client_id, como en el siguiente ejemplo:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Asigna la clase g-signin2 al elemento del botón de acceso en lugar de g-signin. Además, especifica devoluciones de llamada de éxito y error separadas en lugar de una sola devolución de llamada, como en el siguiente ejemplo:

    <!-- Google+ Sign-in (old) -->
    <div
      class="g-signin"
      data-callback="signinCallback">
    </div>
    

    <!-- Google Sign-in (new) -->
    <div
      class="g-signin2"
      data-onsuccess="onSignIn"
      data-onfailure="onSignInFailure">
    </div>
    
  • En lugar de un solo controlador de devolución de llamada, define controladores de éxito y error, como en el siguiente ejemplo:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    
  • Estos cambios actualizan tus permisos predeterminados a profile email openid. Puedes obtener la información básica del perfil del usuario, como el nombre, el correo electrónico y la URL de la imagen de la foto, de la siguiente manera:

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      let profile = googleUser.getBasicProfile();
      let fullName = profile.getName();
      let email = profile.getEmail();
      let imageUrl = profile.getImageUrl();
    }
    

Migra un botón de acceso renderizado de forma dinámica

Si llamaste a gapi.signin.render() para incluir un botón de Acceso con Google+ en tu página, realiza los siguientes cambios:

  • Cuando especifiques tu ID de cliente, ya sea en una etiqueta <meta>, un atributo data- o un objeto de parámetros, cambia la cadena clientid a client_id, como en el siguiente ejemplo:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Renderiza el botón de acceso con gapi.signin2.render() en lugar de gapi.signin.render(), como en el siguiente ejemplo:

    // Google+ Sign-in (old)
    gapi.signin.render('myButton', additionalParams);
    

    // Google Sign-in (new)
    gapi.signin2.render('myButton', additionalParams);
    
  • En lugar de un solo controlador de devolución de llamada, define controladores de éxito y error, como en el siguiente ejemplo:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Estos cambios actualizan tus permisos predeterminados a profile email openid. Puedes obtener la información básica del perfil del usuario con el método getBasicProfile().

Cómo migrar un flujo de acceso iniciado por JavaScript

Si iniciaste el flujo de acceso con una llamada a gapi.auth.signIn() cuando los usuarios hacen clic en el botón de acceso, realiza los siguientes cambios:

  • Cuando especifiques tu ID de cliente, ya sea en una etiqueta <meta>, un atributo data- o un objeto de parámetros, cambia la cadena clientid a client_id, como en el siguiente ejemplo:

    <!-- Google+ Sign-in (old) -->
    <meta name="google-signin-clientid" content="YOUR_CLIENT_ID">
    

    <!-- Google Sign-in (new) -->
    <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    
  • Usa gapi.auth2.attachClickHandler() para iniciar el flujo de acceso cuando se presiona un botón, como en el siguiente ejemplo:

    // Google+ Sign-in (old)
    var signinButton = document.getElementById('signinButton');
    signinButton.addEventListener('click', function() {
      gapi.auth.signIn(additionalParams);
    });
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init();
    auth2.attachClickHandler('signinButton', additionalParams, onSignIn, onSignInFailure);
    
  • En lugar de un solo controlador de devolución de llamada, define controladores de éxito y error, como en el siguiente ejemplo:

    // Google+ Sign-in (old)
    function signinCallback(authResult) {
      if (authResult['status']['signed_in']) {
        // Handle successful sign-in
      } else {
        // Handle sign-in errors
        console.log('Sign-in error: ' + authResult['error']);
      }
    }
    

    // Google Sign-in (new)
    function onSignIn(googleUser) {
      // Handle successful sign-in
    }
    function onSignInFailure() {
      // Handle sign-in errors
    }
    

Estos cambios actualizan tus permisos predeterminados a profile email openid. Puedes obtener la información básica del perfil del usuario mediante una llamada al método getBasicProfile().

Migra un flujo híbrido del servidor

Si usaste la API de JavaScript para adquirir un código de autorización único que puedes pasar a tu servidor, realiza los siguientes cambios:

  • Cambia el alcance de https://www.googleapis.com/auth/plus.login a profile.

  • Usa el método gapi.auth2.grantOfflineAccess() con tu función de devolución de llamada existente, como en el siguiente ejemplo:

    <!-- Google+ Sign-in (old) -->
    <div class="g-signin"
      data-scope="https://www.googleapis.com/auth/plus.login"
      data-clientid="YOUR_CLIENT_ID"
      data-redirecturi="postmessage"
      data-accesstype="offline"
      data-callback="signInCallback">
    </div>
    

    // Google Sign-in (new)
    auth2 = gapi.auth2.init({
      client_id: 'YOUR_CLIENT_ID',
      scope: 'profile'
    });
    
    ...
    
    auth2.grantOfflineAccess().then(signInCallback);
    

Si también necesitas acceso al correo electrónico del usuario, agrega email al parámetro de alcance.