使用 C# sdk 进行 FB 注销
Posted
技术标签:
【中文标题】使用 C# sdk 进行 FB 注销【英文标题】:FB Logout with C# sdk 【发布时间】:2012-10-18 12:53:41 【问题描述】:我已使用我的 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 都对我不起作用。
【问题讨论】:
您好,请查看这篇文章:blog.prabir.me/post/Facebook-CSharp-SDK-Logout.aspx 已经检查了 Pranay,找不到任何有用的东西,我没有 FacebookOAuthClient() 类只有 FacebookClient() 类 您是否建议代码一切正常但出现 FB 错误? 如果你有 FacebookClient.FacebookClient 的 dll,你也有 FacebookClient.FacebookOAuthClient - 试着找到它。 我只有一个名为 Facebook.dll 的 dll,它只有 Facebook.FacebookClient 类,但没有 FacebookClient.FacebookOAuthClient 【参考方案1】:自我上一篇博文以来,Facebook 注销发生了一些变化。这是注销的方法。
var fb = new FacebookClient();
var logoutUrl = fb.GetLogoutUrl(new access_token = "...", next = "...." );
// redirect to logoutUrl.AbsoluteUri
下一个 url 不能是任意 url。我必须是您用来检索访问令牌的网站 url 的一部分。
【讨论】:
如果我将起始页面或回调页面放在 nex 参数中,结果都是一样的,当您打开 facebook.com 时,fb 用户会话仍然处于活动状态 解决了。我的错误是我正在发帖而不是重定向到注销网址。 如果用户还没有访问令牌怎么办?如果他按下“跳过”按钮或按下窗口的 x 标记怎么办? (这意味着用户在 oauth 过程中取消了)我应该将 access_token 留空吗?【参考方案2】:@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");
【讨论】:
以上是关于使用 C# sdk 进行 FB 注销的主要内容,如果未能解决你的问题,请参考以下文章
如何在不刷新页面的情况下使用 JS SDK 检测从 fb 注销