2011-10-21 16 views
8

Attualmente sto testando un'implementazione OAuth di facebook connect utilizzando http://facebooksdk.codeplex.com.Facebook Autenticazione e comportamento strano reindirizzamento

Ho un FacebookController con 2 semplici azioni denominate LogOn e CallBack.

Tutto funziona bene e l'utente è connesso in modo corretto nel mio sistema.

Il problema è quando viene chiamato l'azione CallBack, accade qualcosa di strano che rende un semplice

return Redirect(loggedUrl); 

reindirizzamento all'URL corretto effettuato, ma che termina con i seguenti caratteri: #_=_

Sembra che il server di Facebook invia le informazioni al mio server web usando la seguente intestazione 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 

Come si può vedere che c un trovare i #_=_ caratteri alla fine del Posizione valore.

È come se il Redirect tenesse conto dei caratteri #_=_ aggiungendoli automaticamente a loggedUrl.

Anche quando provo con return Redirect("/");, il #_=_ viene aggiunto da (quasi) nulla al mio URL reindirizzato ...

Qualsiasi idea sarebbe molto apprezzato.

Grazie in anticipo per qualsiasi risposta.

saluti,

LB

+1

Ciò ha causato problemi con l'ascolto URL hash di jQuery Mobile. '$ .mobile.hashListeningEnabled = false;' risolto. –

risposta

2

Facebook ha modificato il loro meccanismo di autenticazione di recente con l'aggiunta di questo # = caratteri alla fine della loro risposta. Il simbolo # alla fine della stringa sta effettivamente creando il problema. Quindi puoi troncare la query e fare il reindirizzamento che funzionerà correttamente.

+0

Cosa intendi per troncare la query? – capdragon

+0

@capdragon: Fetch l'url, rimuovere le # = alla fine e ristampa l'url requrest usando qualsiasi metodo (ajax, redirect, ecc ..) –