2011-03-05 19 views
1

我正在使用Facebook在我的網站上對用戶進行身份驗證。我需要使用C#從服務器註銷時刪除Facebook cookie。你能告訴我怎麼做嗎?測試和工作示例如何用c#從服務器端刪除facebook cookie?

+0

你在服務器端使用什麼框架? ASP.NET? – Cameron 2011-03-05 04:38:04

+2

你不能。你只能禮貌地要求用戶的瀏覽器刪除它。但是cookie最終存儲在用戶的計算機上,您無法控制。如果用戶只讀cookie文件,即使瀏覽器是合作的,您的網站也不會做任何更改。 – 2011-03-05 04:54:40

+0

@Ben:好點,但大多數人不會只使他們的cookie文件只讀;-) – Cameron 2011-03-05 05:01:12

回答

2

假設您知道cookie的名稱,可以將它的過期日期設置爲過去的某個時間。當瀏覽器收到cookie時,它會看到它已過期並將其刪除。

如果您使用的是System.Web.HttpCookieCollectionthis MSDN article具有證明這一點(例如改編自上MSDN)的示例代碼:

if (Request.Cookies["NameOfFacebookCookie"] != null) { 
    HttpCookie myCookie = new HttpCookie("NameOfFacebookCookie"); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 

既然你通過Facebook認證用戶,我假設你」重新使用OAuth。在這種情況下,您的不需要知道cookie的名稱,並且無論如何它不是您的cookie,它在登錄過程中由facebook.com設置。要註銷通過Facebook登錄的用戶,請參閱this answer

+0

樣本和詳細信息+1。如果目標是從Facebook.com域中刪除cookie,它也可能不是Aleca正在尋找的答案。 – 2011-03-05 07:11:34

+0

@Alexei:對,但是除了要求Facebook這樣做(因爲[同源策略](http://en.wikipedia.org/wiki/),除了facebook.com域名外,真的沒有辦法刪除cookie) Same_origin_policy)) – Cameron 2011-03-05 18:49:23

0

我不明白爲什麼我不能「評論」時,但無論如何;爲了補充上面Alexei和Cameron之間的討論,我們假設這個cookie是由Facebook控制的。如果你使用Javascript SDK,那麼是的,Cameron的評論是真實的。但是,如果您創建了手動登錄流(無SDK),以便您可以在服務器端處理登錄,那麼您可能創建了自己的Cookie來保存檢索到的access_token,當然,您可以刪除它。

相關問題