如何使用 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# 的 div 中删除 css

如何检测用户何时从 Facebook 删除应用

如何在 C# 中实现 X-FACEBOOK-PLATFORM 机制

无法从服务器端检索搜索结果:使用Python的Facebook Graph API

获取 Facebook 登录回调 C#

如何在服务器端完全启用 Facebook OAuth 2.0?