3

私は、ASP.NET LinkBut​​ton を介してユーザーを Facebook からログアウトできることについて、StackOverflow およびインターネット上のかなりの数の投稿を見てきました。

次の投稿からソリューションを実装してみました。

コード

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クリックイベントが発生していることは間違いありません。jQuery コードは、標準の HTML アンカーと組み合わせて使用​​すると正常に機能するため、ASP.NET LinkBut​​ton で機能しない理由はありません。

どんな助けでも大歓迎です。

4

1 に答える 1

3

ご助力いただきありがとうございます。しかし、次のリンクを使用して、ユーザーをログアウトする方法を見つけることができました。

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

この記事のようなコールバック ページを作成しました。「アクセストークン」を受け取ったら、なんとかユーザーをログアウトさせました。

コールバック ページのコードは次のとおりです。

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);
}

同じ問題に遭遇した場合、これが他の人に役立つことを願っています。

于 2012-08-06T10:17:12.953 に答える