【问题标题】:FB Logout with C# sdk使用 C# sdk 进行 FB 注销
【发布时间】: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

标签: c# .net facebook sdk logout


【解决方案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");
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2011-10-07
    • 1970-01-01
    相关资源
    最近更新 更多