Estoy interesado en cómo implementar OAuth en React usando popup ( window.open
).
Por ejemplo tengo:
mysite.com
- Aquí es donde abro la ventana emergente.passport.mysite.com/oauth/authorize
- surgir.
La pregunta principal es cómo crear una conexión entre window.open
(ventana emergente) y window.opener
(como se conoce, el window.opener es nulo debido a la seguridad entre dominios, por lo tanto, ya no podemos usarlo).
⇑
window.opener
se elimina cada vez que navega a un host diferente (por razones de seguridad), no hay forma de evitarlo. La única opción debería ser hacer el pago en un marco si es posible. El documento superior debe permanecer en el mismo host.
Esquema:
Soluciones posibles:
- Verifique una ventana abierta usando la que se
setInterval
describe aquí . Uso de almacenamiento cruzado (no vale la pena en mi humilde opinión).
Entonces, ¿cuál es el mejor enfoque recomendado en 2019?
Contenedor para reaccionar: https://github.com/Ramshackle-Jamathon/react-oauth-popup
javascript
reactjs
oauth
popup
authorization
Arturo
fuente
fuente
setInterval
podría utilizarse como reserva para localStoragelocalStorage
, pero solo funciona para el mismo dominio, por lo que no funciona en mi condiciónwindow.opener
después de redirigir de nuevo a nuestro dominio, pero este no es el casoRespuestas:
Sugerido por Khanh TO . OAuth emergente con localStorage. Basado en react-oauth-popup .
Esquema:
Código:
oauth-popup.tsx:
app.tsx
fuente
Una vez me encuentro con un problema en mi flujo de inicio de sesión oauth con el error window.open/window.opener en ms-edge
Mi flujo antes de este problema fue
Mi flujo después de este problema fue
fuente