website - ejemplos - "Immediate_failed": no se pudo iniciar sesión automáticamente en el usuario
etiqueta meta (4)
Tengo un problema cuando desarrollé mi sitio web con el inicio de sesión de Google+: lo hice paso a paso que el doc me dijo, pero siempre fallaba en el paso 4: https://developers.google.com/+/web/signin/
el resultado siempre fue "" immediate_failed "- No se pudo iniciar sesión automáticamente en el usuario", simplemente no sé por qué, ¿alguien puede ayudarme, muchas gracias? :-(
Tenga en cuenta que en el código de ejemplo que ha señalado, la comprobación "immediate_failed" está comentada. Esto es intencional, ya que la primera vez que un usuario encuentra el botón Iniciar sesión en la página, falla.
La razón por la que falla es que cuando la página se carga por primera vez, incluso antes de que el usuario presione el botón, se envía una solicitud a Google para determinar si el usuario ya inició sesión (a través de Google u otro sitio, por ejemplo). Si lo son, no es necesario que inicien sesión de nuevo, por lo que el botón nunca debe mostrarse. Pero si aún no han iniciado sesión, obtendrá la respuesta "immediate_failed" y deberá mostrar (o no) el botón.
tl; dr - No te preocupes por la falla inmediata_ cuando la página se carga por primera vez. Esto es normal.
Como solución alternativa utilizo el método gapi.auth.authorize en la devolución de llamada gapi.auth.signIn. Aquí está mi código:
gapi.auth.signIn({
''callback'': gPlusLoginCallback
});
function gPlusLoginCallback(authResult) {
if (authResult[''status''][''signed_in'']) {
doSmth(authRes[''access_token'']);
} else if (authResult[''error''] == "immediate_failed") {
gapi.auth.authorize({
client_id: gplusClientId,
scope: ''https://www.googleapis.com/auth/plus.login email'',
immediate: true
}, function (authRes) {
if (authRes[''status''][''signed_in'']) {
doSmth(authRes[''access_token'']);
}
});
}
}
function doSmth(accessToken){
//Do smth
}
Cambie esta configuración "inmediato: verdadero", para que sea falso "inmediato: falso". Pero si desea realizar una implementación más compleja, consulte el primer ejemplo aquí https://developers.google.com/api-client-library/javascript/start/start-js . Tienes que hacer llamadas a "gapi.auth.authorize" de Google ({... ", la primera con" immediate: true ", y la segunda con" immediate: false ").
La pregunta es antigua, pero me enfrenté a este problema recientemente.
En mi caso, fue porque especifiqué el prompt
parámetro URI a none
. Supongo que a Google no le gusta eso si el usuario nunca antes ha ingresado a su plataforma.
Cada vez que cambié eso para consent
o lo consent
completo, funcionó de maravilla.