2011-10-21 45 views
8

我目前正在使用http://facebooksdk.codeplex.com測試facebook連接的OAuth實現。Facebook身份驗證和奇怪的重定向行爲

我有一個FacebookController有兩個簡單的操作,稱爲LogOn回撥

一切工作正常,用戶正確登錄到我的系統。

問題是,當回調動作被調用時,奇怪的事情發生,使一個簡單的

return Redirect(loggedUrl); 

重定向到正確記錄的網址,但截至具有下列特徵:#_=_

看來, Facebook服務器使用下面的HTTP標頭將信息發送到我的web服務器:

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 

正如你可以看到我們ç在位置值末尾找到#_=_個字符。

這就像Redirect將#_=_字符自動添加到loggedUrl中一樣。

即使我有return Redirect("/");試試,#_=_從(幾乎)無處我重定向的URL ...

任何想法將非常感激增加。

在此先感謝您的任何答案。

問候,

LB

+1

這導致了jQuery Mobile的URL哈希監聽問題。 '$ .mobile.hashListeningEnabled = false;'解決了它。 –

回答

2

Facebook已經通過將該#=字符到其響應的結束最近修改他們的認證機制。字符串末尾的#符號實際上是造成問題的原因。所以你可以截斷查詢,並做重定向,這將正常工作。

+0

你是什麼意思是截斷查詢? – capdragon

+0

@capdragon:取得網址,在最後刪除#=並使用任何方法重新發布url請求(ajax,redirect等)。 –