javascript - integrar - Error en la API de inicio de sesión de Google con error no detectado No se pudo obtener el origen principal del hash de URL
integrar login google en mi web (3)
Mi aplicación electrónica comenzó a fallar hoy por la misma razón. He estado depurando bastante y creo que encontré la razón, pero no sé cómo resolverlo, por qué sucedió o si es culpa de un electrón o de Google.
En mi aplicación electrónica, tengo 2 webviews
, una para el contenido principal y otra para los diálogos emergentes de Google.
Entonces, cuando Google necesita abrir la autenticación, genera este IFRAME:
<iframe id="ssIFrame_google"
sandbox="allow-scripts allow-same-origin" aria-hidden="true"
src="https://accounts.google.com/o/oauth2/iframe#origin=https%3A%2F%2Fxxxx.com&rpcToken=dxxd318480305.4777704"
style="... display: none;"></iframe>
Tenga en cuenta que la URL tiene parámetros HASH: su origen y el token.
Sin embargo, cuando en el lado del electrón capturo el evento de nueva ventana para abrir la URL en otra vista web, el evento que recibí FALTA los parámetros de hash:
event {
type : "new-window",
url:"https://accounts.google.com/o/oauth2/iframe",
.
.
}
Entonces, de lo que se está quejando el iframe de google (lo depuré) es exactamente que no puede encontrar los parámetros de origin
y rpctoken
que deberían estar en los parámetros de hash .
Por una razón que no entiendo (no he actualizado electrón) el evento de new-window
ya no recibe la url completa.
Usando la respuesta de @howMuchCheeseIsTooMuchCheese a continuación, he cambiado el flujo para usar la devolución de llamada de redirección, luego capturar esa devolución de llamada y reiniciar la aplicación. No es lo ideal, pero al menos puedo iniciar sesión en mis aplicaciones.
Estoy usando el cliente JavaScript de inicio de sesión de Google durante meses sin problemas. Pero recientemente, cuando el usuario hizo clic en el botón de inicio de sesión de la aplicación web que se agregó a la pantalla de inicio, la ventana emergente de inicio de sesión simplemente se cuelga sin mostrar ningún contenido.
Cuando se depura a través de la depuración remota, se muestra un error en el panel de la consola:
Uncaught Failed to get parent origin from URL hash!
se originó en 4188232449-v2-idpiframe.js: 136 (javascript cargado internamente por la biblioteca de Google).
Estoy seguro de que no es un error de programación / configuración, ya que la misma aplicación web estuvo funcionando durante meses sin problemas y no he modificado ningún código.
He intentado buscar en Google este problema en particular y navegar en la documentación de Google para cualquier cambio reciente en la API de inicio de sesión de Google sin ninguna suerte.
¿Se trata de un error de la biblioteca del cliente Javascript de la API de Google, un error en la actualización reciente del navegador Chrome en Android o hay algunos cambios en el uso de la API que aún no conozco?
La biblioteca utilizada es https://apis.google.com/js/platform.js
Este es el parámetro init para gapi.auth2.init ():
{
client_id: GAPI_CID, // defined as constant
cookiepolicy: ''single_host_origin'',
prompt: ''select_account'',
ux_mode: ''popup'',
fetch_basic_profile: true
}
Cualquier percepción será muy apreciada. Gracias.
PD: este problema es diferente si no se detectó No se pudo obtener el origen principal del hash de URL, ya que en ese caso el problema se debe a una mala configuración de la credencial requerida en la consola de la API de Google. Si nunca ha logrado integrar el flujo de inicio de sesión con su aplicación, tal vez la respuesta de esa publicación pueda ayudarlo.
De lo contrario, si ha integrado con éxito el flujo de inicio de sesión durante un tiempo, pero recientemente el problema aparece repentinamente / de forma errática con un síntoma de pantalla en blanco en la ventana emergente, entonces usted tiene el mismo problema.
No es una respuesta completa todavía, pero esta puede ser una solución razonable para algunos. ux_mode
el ux_mode
para usar la redirect
y ahora está funcionando parcialmente.
auth2 = gapi.auth2.init({
client_id: ''1234.apps.googleusercontent.com'',
scope: ''profile email'',
ux_mode: ''redirect'',
redirect_uri: ''https://blahblah.io/oauth2callback''
})
NOTA: parece que se requiere redirect_uri
, a diferencia de los documentos de Google. Esto no es un reemplazo perfecto, pero resuelve el "hash de URL". error
Esta publicación de blog y el Git Repo en ella también podrían ser útiles para cualquier persona que intente usar la redirect
Puedo confirmar que estamos experimentando los mismos problemas en mi empresa desde hace poco. Parece un poco errático, no el 100% del tiempo. Pero para algunos usuarios, en algún momento, se encuentran con una ventana emergente de inicio de sesión vacía con la URL que apunta a " https://accounts.google.com/o/oauth2/iframe ", pero no sucede nada.