使用C#sdk注销FB

时间:2012-10-29 07:50:49

标签: c# .net facebook sdk logout

我使用我的FB凭据登录了我的应用。最后我做了注销并删除了我的会话变量。我已从应用程序注销,但FB会话仍保持打开,但我在FB注销页面上发布了帖子,如代码所示:

if (Session["FBAccessToken"] != null){

  var fb = new Facebook.FacebookClient();
  string accessToken = Session["FBAccessToken"] as string;
  //var logoutUrl = fb.GetLogoutUrl(new { access_token = accessToken, next = "https://www.facebook.com/", });
  var logoutUrl = fb.GetLogoutUrl(new {  next = "https://www.facebook.com/", });

  fb.Post(logoutUrl.AbsoluteUri, new { access_token = accessToken });
  Session.RemoveAll();
}

我已经尝试了两种方法:使用和不使用访问令牌参数生成的logoutUrl,对我来说都不起作用。

2 个答案:

答案 0 :(得分:2)

自我上一篇博客文章发布以来,Facebook注销已发生变化。这是退出的方式。

var fb = new FacebookClient();
var logoutUrl = fb.GetLogoutUrl(new {access_token = "...", next = "...." });

// redirect to logoutUrl.AbsoluteUri

下一个网址不能是任意网址。我必须是您用来检索访问令牌的站点URL的一部分。

答案 1 :(得分:0)

@prabir有答案。在我为我的MVC应用程序调整它之后,这是一个完整的答案。只需将“localhost:51042 /”替换为适合您应用的URL即可。

这实际上填补了教程中的漏洞:http://www.asp.net/mvc/overview/getting-started/using-oauth-providers-with-mvc

public ActionResult LogOff()
    {
        WebSecurity.Logout();

        if (Session["facebooktoken"] != null)
        {
            var fb = new Facebook.FacebookClient();
            var logoutUrl = fb.GetLogoutUrl(new { access_token = Session["facebooktoken"], next = "http://localhost:51042/" });

            Response.Redirect(logoutUrl.AbsoluteUri);
            Session.RemoveAll();
        } 

        return RedirectToAction("Index", "Home");
    }