Pasos para minimizar el impacto de los cambios de alcance en los usuarios
- 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, usaemail
en su lugar. - 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? - 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. - Solicita a tus usuarios que vuelvan a dar su consentimiento con el nuevo alcance, como
email
, sinprofile.emails.read
. - 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>
, undata-
o un objeto de parámetros, cambia la cadenaclientid
aclient_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 deg-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>
, undata-
o un objeto de parámetros, cambia la cadenaclientid
aclient_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 degapi.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>
, undata-
o un objeto de parámetros, cambia la cadenaclientid
aclient_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
aprofile
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.