2012-06-23 3 views
11

django-social-auth me redirige a /mypage#_=_ al utilizar el back-end de Facebook.¿Cómo deshacerse del # _ = _ en el redireccionamiento de facebook de django-social-auth?

Como estoy trabajando con jquery mobile en la interfaz, no puedo aceptar eso.

Encontré: https://developers.facebook.com/blog/post/552/ en el sitio de desarrolladores de Facebook.

Cambio en la sesión de redirección Comportamiento

Esta semana, empezó a añadir un fragmento # _ = _ a redirect_uri cuando este campo se deja en blanco. Asegúrese de que su aplicación pueda manejar este comportamiento .

Así que probé settung SOCIAL_AUTH_LOGIN_REDIRECT_URL en la configuración de django-social-auth a algo 'ninguno en blanco'. Sin suerte

Entonces, ¿cómo deshacerse de la cosa hash?

¡Muchas gracias!

+0

¿Intentó eliminar esa parte utilizando HTMLParser o por regex? –

+0

NO No lo hice, porque creo que sería solo un "truco" pero de todos modos ... parece que tengo que hacerlo de esta manera :( – wzr1337

+1

Cuando Facebook dijo: "Por favor, asegúrese de que su aplicación pueda manejar este comportamiento". Creo que quieren decir que no hay una bandera para configurar esto en el FB. :) –

Respuesta

14

Bueno, esto puede no ser la solución exacta, pero la adición siguiente secuencia de comandos para que la cabeza ayudaría a solucionar el problema:

<script type="text/javascript"> 
    if (window.location.hash == '#_=_') { 
     window.location.hash = ''; 
    } 
</script> 
+5

Esto no resuelve el problema, es solo un truco. – commadelimited

7

Parece que Facebook siempre añade el '# _ = _' incluso si el redirect_uri es provisto. Dado que este comportamiento es contrario al blog post de Facebook, esta funcionalidad se ha enviado a Facebook como bug. Facebook ha proporcionado una respuesta oficial a este error, afirmando que al agregar '# _ = _' hay una característica de diseño que evita un posible defecto de seguridad.

Facebook proporciona los siguientes consejos para tratar con el fragmento de uri no deseado, "Si la estética, o el comportamiento del lado del cliente, de la URL resultante son motivo de preocupación, sería posible usar window.location.hash (o incluso un redireccionamiento del lado del servidor propio) para eliminar los caracteres ofensivos ".

Parece que el javascript proporcionado anteriormente es una solución válida, incluso si es un poco raro.

0
<script type="text/javascript"> 
    if (window.location.href.indexOf('#') > -1) { 
     window.location.href = '/'; 
    } 
</script> 
Cuestiones relacionadas