我一直在关注StackOverflow和互联网上的一些帖子,以便能够通过ASP.NET LinkButton将用户从Facebook注销。
我尝试过以下帖子实施解决方案:
<asp:LinkButton ID="LogoutButton" CssClass="log-out fb" OnClick="LogoutButton_Click" runat="server">Logout</asp:LinkButton>
$(".log-out.fb").click(function () {
FB.logout(function (response) {
//Logged out
FB.Auth.setAuthResponse(null, 'unknown');
});
});
<a id="MainContent_LogoutButton" class="log-out fb" href="javascript:__doPostBack('ctl00$MainContent$LogoutButton','')" style="width: 66px; ">Logout</a>
我当然知道在通过Firebug进行调试时会发生jQuery click事件。当与标准HTML锚点结合使用时,jQuery代码可以正常工作,因此没有理由不在ASP.NET LinkButton上工作。
任何帮助都将不胜感激。
答案 0 :(得分:3)
感谢您的帮助。但我设法找到了一种使用以下链接注销用户的方法:
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);
}
我希望如果他们遇到同样的问题,这会有所帮助。