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 en su lugar.
  2. Obtén la aprobación para profile.emails.read con una solicitud de verificación aprobada. Consulta ¿Cómo envío la solicitud de 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 de 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 tus usuarios que vuelvan a dar su consentimiento con el nuevo alcance, como email, sin profile.emails.read.
  5. Quita el permiso que dejará de estar disponible de manera gradual en la configuración de la pantalla de consentimiento de OAuth de las APIs de Google.

Los cambios que debes realizar para migrar tu sitio del Acceso con Google+ a Google El acceso depende del flujo de Acceso con Google+ que uses. En general, la migración requiere que actualices tu botón de acceso, los permisos solicitados y las instrucciones sobre cómo recuperar la información del perfil de Google.

Cuando actualices el botón de acceso, no hagas referencia a Google+ ni uses el color rojo. Cumplen con la versión actualizada lineamientos de desarrollo de la marca.

La mayoría de las aplicaciones de acceso a Google+ solicitaron alguna combinación de estos ámbitos: plus.login, plus.me y plus.profile.emails.read. Debes reasignar alcances de la siguiente manera:

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

Muchos implementadores del Acceso con Google+ utilizaron flujo de código. Esto significa que las aplicaciones para Android, iOS o JavaScript obtengan un código OAuth de Google el cliente envía ese código de vuelta al servidor, junto con una solicitud entre sitios protección contra falsificaciones. El servidor luego valida el código y obtiene actualizaciones y tokens de acceso para extraer información del perfil del usuario desde la API de people.get

Google ahora 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 y también pueden verificarse estáticamente en tu servidor, lo que evita una falla llamada a la API adicional para obtener información del perfil de usuario de los servidores de Google. Sigue el instrucciones para validar los tokens de ID en tu servidor.

Si aún prefieres usar el flujo de código para obtener información de perfil, podrías hacerlo. Una vez que tu servidor tenga un token de acceso, debes obtener información del perfil del usuario desde los extremos userinfo especificados en nuestra sección Documento de descubrimiento. La API tiene un formato diferente al de la respuesta del perfil de Google+, 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 por tarea de la clase g-signin a un elemento, realiza los siguientes cambios:

  • Cuando especificas tu ID de cliente, ya sea en una etiqueta <meta>, un 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 fracaso por separado en lugar de un 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 falla, 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 foto URL de la imagen 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 renderizado de forma dinámica

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

  • Cuando especificas tu ID de cliente, ya sea en una etiqueta <meta>, un 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 falla, 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 haz clic en el botón de acceso, realiza los siguientes cambios:

  • Cuando especificas tu ID de cliente, ya sea en una etiqueta <meta>, un 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">
    
  • Usar gapi.auth2.attachClickHandler() para iniciar el flujo de acceso cuando se muestre 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 falla, 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 llamando al getBasicProfile() .

Migra un flujo híbrido del servidor

Si usaste la API de JavaScript para obtener un código de autorización de uso único para ti para pasar al 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 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.