在服务器端清除Facebook Web上下文

时间:2012-02-08 23:22:14

标签: facebook facebook-c#-sdk

我使用Facebook Javascript SDK实现了客户端身份验证。我检查Application_AuthenticateRequest事件中的FacebookWeb上下文,以确定用户是否已登录并相应地设置HttpCoontext.Current.User IPrincipal。

如果我从数据库中删除用户,我想删除Facebook网络上下文,以确保HttpContext.Current.User.IsAuthenticated为false。此外,如果用户取消授权我的应用程序,我想删除Facebook网络上下文。我不想将它们记录在Facebook之外 - 只需删除facebook web上下文,这样会话就不再被认证了。

我如何在服务器端执行此操作?

1 个答案:

答案 0 :(得分:1)

我找到的最佳方法是手动删除cookie fbsr_ {your app id}。当然,这只能在用户与您的应用进行交互时完成。如果他们在facebook.com上删除您的应用或以其他方式取消授权,则在下次访问您的应用之前,您将无法删除该Cookie。

以下是我使用Facebook C#SDK执行此操作的一些代码:

string cookieName = "fbsr_" + FacebookApplication.Current.AppId;
if (Request.Cookies[cookieName] != null) {
   HttpCookie myCookie = new HttpCookie(cookieName);
   myCookie.Expires = DateTime.Now.AddDays(-1d);
   Response.Cookies.Add(myCookie);
}

每当我从Facebook收到OAuth异常时都会这样做,表明正在使用的用户访问令牌无效。然后我强制用户重新进行身份验证。