2011-10-21 16 views
8

Actualmente estoy probando una implementación de OAuth de facebook connect usando http://facebooksdk.codeplex.com.Autenticación de Facebook y extraño comportamiento de redirección

Tengo un FacebookController con 2 acciones simples llamados LogOn y RetrLla.

Todo funciona bien y el usuario ha iniciado sesión correctamente en mi sistema.

El problema es cuando se llama a la acción de devolución de llamada, algo extraño sucede que hace que un simple redireccionamiento

return Redirect(loggedUrl); 

a la URL de inicio de sesión correcto pero que termina con los siguientes caracteres: #_=_

Parece ser que la Facebook servidor envía la información a mi servidor web mediante el siguiente encabezado HTTP:

HTTP/1.1 302 Found 
Cache-Control: private, no-cache, no-store, must-revalidate 
Expires: Sat, 01 Jan 2000 00:00:00 GMT 
Location: http://mywebsite.com/Facebook/CallBack/?state=1&code=AQCXexr10uxANSBOu9JqrBDxqPkWbsyxM1S9ltuY9XwCXW7eGsOII329SthClxOSM_a7wJvwrXh1_O3D5I7E_nxCDTWDLpyYdMpMUfw4zMWcQ4oV2PmRkIMd2NfPYRKlkLgkurEzka1CjAF1jp8Xb3crklOB59W4IT7LZy6MEmFusuhSKacmsTcV1LAOW4uJ3K4#_=_ 
P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p" 
Pragma: no-cache 
Set-Cookie: locale=en_US; expires=Fri, 28-Oct-2011 00:09:38 GMT; path=/; domain=.facebook.com 
Content-Type: text/html; charset=utf-8 
X-FB-Server: 10.43.103.61 
X-Cnection: close 
Date: Fri, 21 Oct 2011 00:09:38 GMT 
Content-Length: 0 

Como se puede ver que c y encuentre los caracteres #_=_ al final del valor Ubicación.

Es como si el redireccionamiento tuviera en cuenta los caracteres #_=_ agregándolos automáticamente a loggedUrl.

Incluso cuando trato con return Redirect("/");, la #_=_ se añade a partir de (casi) ninguna parte de mi URL redirigida ...

Cualquier idea sería muy apreciada.

Gracias de antemano por cualquier respuesta.

Saludos,

LB

+1

Esto causó problemas con el hash de URL de jQuery Mobile. '$ .mobile.hashListeningEnabled = false;' lo resolvió. –

Respuesta

2

Facebook ha modificado su mecanismo de autenticación recientemente por la adición de esta # = caracteres al final de su respuesta. El símbolo # al final de la cadena está realmente creando el problema. Entonces puede truncar la consulta y hacer el redireccionamiento que funcionará bien.

+0

¿Qué quieres decir con truncar la consulta? – capdragon

+0

@capdragon: Obtenga la url, elimine el # = al final y vuelva a emitir la url requerida usando cualquier método (ajax, redirigir etc.) –