6

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 は、アクセス トークン パラメーターを使用して、または使用せずに生成されましたが、どちらも機能しませんでした。

4

2 に答える 2

2

前回のブログ投稿以降、Facebook のログアウトに変更がありました。ログアウト方法はこちら。

var fb = new FacebookClient();
var logoutUrl = fb.GetLogoutUrl(new {access_token = "...", next = "...." });

// redirect to logoutUrl.AbsoluteUri

次の URL を任意の URL にすることはできません。アクセス トークンの取得に使用したサイト URL の一部である必要があります。

于 2012-10-29T15:53:58.240 に答える
0

@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");
    }
于 2013-06-10T01:38:41.293 に答える