我使用我的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,对我来说都不起作用。
答案 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");
}