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 anteriormente usaste profile.emails.read para ese propósito, usa email en su lugar.
  2. Obtén la aprobación de profile.emails.read con una solicitud de verificación aprobada. Consulta ¿Cómo envío para la verificación?
  3. Revoca el token de usuario anterior para el permiso que se quitará o quita el acceso a la aplicación por completo. Por ejemplo, se debería revocar un token con acceso profile.emails.read. Te recomendamos que apliques la revocación mientras los usuarios estén en la aplicación para obtener su consentimiento de inmediato.
  4. Solicita a los usuarios que vuelvan a dar su consentimiento con el alcance nuevo, como email, sin profile.emails.read.
  5. Quita el permiso que se eliminará de la configuración de la pantalla de consentimiento de OAuth de las APIs de Google.

Los cambios que debes hacer para migrar tu sitio del Acceso con Google+ al Acceso con Google 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 la información del perfil de Google.

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

La mayoría de las aplicaciones de acceso con G+ solicitaron alguna combinación de los alcances: plus.login, plus.me y plus.profile.emails.read. Debes reasignar tus permisos de la siguiente manera:

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

Muchos implementadores del 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 envía de vuelta al servidor, junto con protección contra solicitudes entre sitios. Luego, el servidor valida el código y obtiene tokens de actualización y de acceso para extraer información del perfil del usuario de la API de people.get.

Google ahora te recomienda que solicites un token de ID y lo envíes desde tu cliente a tu servidor. Los tokens de ID tienen integradas protecciones contra falsificaciones entre sitios 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 prefieres usar el flujo de código para obtener información de perfil, puedes hacerlo. Una vez que tu servidor tenga un token de acceso, deberás obtener información de 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 tu análisis al formato nuevo.

Migra 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 especificas 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 independientes de éxito y error 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 los 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();
    }
    

Cómo migrar un botón de acceso procesado de forma dinámica

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

  • Cuando especificas 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 los 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 de 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 especificas 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 presione 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 los 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 de 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 para pasarlo a tu servidor, realiza los siguientes cambios:

  • Cambia el permiso 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 permiso.