2011-09-30 8 views
25

Realicé la autenticación OAuth con Twitter y Facebook. Actualmente, con cada uno de estos sitios, mi servidor redirige al usuario a una URL específica (por ejemplo, http://api.twitter.com/oauth/authorize con Twitter), luego recibe los parámetros de autenticación mediante la URL de devolución de llamada.¿Cómo puedo hacer la solicitud de OAuth al abrir una nueva ventana, en lugar de redirigir al usuario desde la página actual?

Pero de esa manera, los usuarios son redirigidos fuera de mi página (a Facebook o Twitter), y solo devuelve después de ingresar la contraseña correcta del nombre de usuario &. Es como cuando http://techcrunch.com lo haces cuando un usuario intenta twittear una publicación.

Recuerdo que en algún sitio, he visto que no podemos conectarnos redirigiendo al usuario, sino que también abrimos una ventana emergente para que el usuario ingrese las credenciales. Una vez completada la autenticación, la ventana emergente se cierra, la página principal se actualiza con nuevo contenido.

Esta podría ser una tarea muy simple con javascript, pero todavía no lo puedo descifrar. Puedo abrir la URL de autenticación en una ventana emergente, pero ¿cómo obtener el resultado & para actualizar la página principal?

Respuesta

43

Suponiendo que está abriendo el URL de autenticación en un pop-up usando window.open(), puede acceder a la ventana primaria mediante el uso de:

window.opener 

y para recarga ventana padre (de un pop-up) utiliza:

window.opener.location.reload(); 

Este código debe ser realizado sobre url que se ha configurado como URL de devolución de llamada de éxito de la autorización OAuth.

En general, el flujo debe ser:

  • abrir una ventana emergente con una página de autorización (en twitter.com por ejemplo)
  • después de twitter autorización exitosa redirige el usuario a la URL dada por usted (que se abre en la misma ventana emergente)
  • la ventana de apertura se vuelve a cargar (a través de window.opener.location.reload())
  • cerrar la propia emergente (el uso de JavaScript es que quiere)
+0

¿quieres decir que puse javascript en la ventana emergente para hacer esto? –

+6

Sí, en la ventana emergente, en una página que es una devolución de llamada exitosa de autorización de oauth. Entonces, el flujo es: abre una ventana emergente con una página de autorización (en twitter.com, por ejemplo), luego de que la autorización exitosa de Twitter redirecciona al usuario a la url dada por usted (se abre en la misma ventana emergente), en ese momento La página de devolución de llamada pone un javascript de mi respuesta, la ventana * abridor * se vuelve a cargar y usted simplemente puede cerrar la ventana emergente utilizando javascript también. – WTK

+0

Lo intentaré de inmediato –

Cuestiones relacionadas