【问题标题】:Logout of Facebook Through Linkbutton通过链接按钮注销 Facebook
【发布时间】:2012-08-01 07:07:48
【问题描述】:

我已经在 StackOverflow 和 Internet 上查看了很多关于能够通过 ASP.NET LinkBut​​ton 将用户从 Facebook 注销的帖子。

我已尝试实施以下帖子中的解决方案:

代码

ASPX 页面

<asp:LinkButton ID="LogoutButton" CssClass="log-out fb"  OnClick="LogoutButton_Click" runat="server">Logout</asp:LinkButton>

JavaScript

$(".log-out.fb").click(function () {
    FB.logout(function (response) {
        //Logged out
        FB.Auth.setAuthResponse(null, 'unknown');
    });
});

HTML 输出

<a id="MainContent_LogoutButton" class="log-out fb" href="javascript:__doPostBack('ctl00$MainContent$LogoutButton','')" style="width: 66px; ">Logout</a>

我绝对知道在通过 Firebug 进行调试时会触发 jQuery click 事件。 jQuery 代码在与标准 HTML 锚结合使用时可以正常工作,因此它没有理由不能在 ASP.NET LinkBut​​ton 上工作。

任何帮助将不胜感激。

【问题讨论】:

  • HTML 中没有 “ASP.NET LinkBut​​ton” 这样的东西。请向我们展示您的服务器端脚本生成的实际 HTML 代码,或者更好的是,向我们展示示例页面的 URL 以查看它。
  • 我已将帖子修改为“ASPX”而不是“HTML”。 :-) 我将发布由 .NET 生成的 HTML。
  • @CBroe 帖子已更新。通过查看 HTML 输出,计算导致问题的 href="javascript:__doPostBack('ctl00$MainContent$LogoutButton','')" ?
  • 从它的名字来看,它听起来像是在做一些事情,比如发回服务器,所以是的,这可能是问题所在。如果您只想拥有一个 HTML A 元素,那么为什么不在您的代码中编写其中一个元素,而完全忘记那些 asp-button-thing...?
  • 你可以在FB.logout的回调函数中调用你想要在服务器端执行的代码,只需指向一个通过location.href = "…"执行该代码的URL

标签: asp.net facebook logout linkbutton


【解决方案1】:

感谢您的所有帮助。但我设法通过使用以下链接找到注销用户的方法:

https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN

我创建了一个类似于来自 article 的回调页面。收到“访问令牌”后,我设法将用户注销。

这是我的回调页面代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!String.IsNullOrEmpty(Request["code"]) && !Page.IsPostBack)
    {
        FacebookCallback();
    }
}

private void FacebookCallback()
{
    var client = new RestClient { Authority = "https://graph.facebook.com/oauth/" };
    var request = new RestRequest { Path = "access_token" };

    request.AddParameter("client_id", ConfigurationManager.AppSettings["facebook.appid"]);
    request.AddParameter("redirect_uri", ConfigurationManager.AppSettings["facebook.logout.callbackurl"]);
    request.AddParameter("client_secret", ConfigurationManager.AppSettings["facebook.appsecret"]);
    request.AddParameter("code", Request["code"]);

    RestResponse response = client.Request(request);
    // A little helper to parse the querystrings.
    StringDictionary result = QueryStringHelper.ParseQueryString(response.Content);

    string aToken = result["access_token"];

    LogUserOut(aToken);
}

private void LogUserOut(string sToken)
{
    string url = String.Format("https://www.facebook.com/logout.php?next=http://{0}/Default.aspx&access_token={1}", ConfigurationManager.AppSettings["site.url"], sToken);

    Response.Redirect(url);
}

如果遇到同样的问题,我希望这可以帮助其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2017-08-22
    • 2012-05-22
    • 2011-06-15
    • 2012-05-04
    • 2011-06-15
    相关资源
    最近更新 更多