使用 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 注销

IOS FACEBOOK SDK,从FB注销并登录后

FB JS-SDK 无法检测到用户直接退出 FB

无法使用 Facebook C# SDK 注销 Facebook

在 WP7 上注销 Facebook C# SDK

facebook 注销 API - 为啥下一步?