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.openerse 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
setIntervaldescribe 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


setIntervalpodría utilizarse como reserva para localStoragelocalStorage, pero solo funciona para el mismo dominio, por lo que no funciona en mi condiciónwindow.openerdespué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.tsxfuente
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