如何使用 C# 从服务器端删除 facebook cookie?
Posted
技术标签:
【中文标题】如何使用 C# 从服务器端删除 facebook cookie?【英文标题】:How to delete facebook cookie from server side with c#? 【发布时间】:2011-07-09 06:27:49 【问题描述】:我正在使用 facebook 在我的网站上对用户进行身份验证。我需要使用 C# 从服务器端注销时删除 facebook cookie。你能告诉我怎么做吗?测试和工作示例
【问题讨论】:
你在服务器端使用什么框架? ASP.NET? 你不能。您只能礼貌地要求用户的浏览器将其删除。但 cookie 最终存储在您无法控制的用户计算机上。如果用户将他们的 cookie 文件设为只读,您的网站将不会进行任何更改,即使浏览器是合作的。 @Ben:好点,但大多数人不会将他们的 cookie 文件设为只读 ;-) @Cameron:是的,但只读 cookie 文件只是客户端可以忽略来自服务器的请求的多种方式之一。许多浏览器(和应用程序防火墙)可以配置为拒绝来自黑名单(或非白名单)站点的 cookie。而且大多数浏览器默认阻止跨域cookie访问,这可能就是这里发生的事情。 delete facebook session cookie from my application on users logout的可能重复 【参考方案1】:我不明白为什么我不能在什么时候“评论”,但无论如何;添加到上述 Alexei 和 Cameron 之间的讨论中,假设 cookie 由 Facebook 控制。如果您使用 javascript SDK,那么是的,Cameron 的评论是正确的。但是,如果您创建了手动登录流程(无 SDK)以便您可以在服务器端处理登录,那么您可能会创建自己的 cookie 来保存检索到的 access_token,当然,您可以删除它。
【讨论】:
【参考方案2】:假设您知道 cookie 的名称,您可以将其到期日期设置为过去的某个时间。当浏览器收到cookie时,会看到它已经过期并删除它。
如果您使用的是System.Web.HttpCookieCollection
,this 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。
【讨论】:
+1 获取示例和详细信息。此外,如果目标是从 Facebook.com 域中删除 cookie,它可能仍然不是 Aleca 正在寻找的答案。 @Alexei:是的,但除了要求 Facebook 这样做(因为same origin policy)之外,真的没有办法从 facebook.com 域中删除 cookie以上是关于如何使用 C# 从服务器端删除 facebook cookie?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中实现 X-FACEBOOK-PLATFORM 机制