2012-10-29 5 views
6

私は自分のFB資格情報を使って自分のアプリにログインしています。最後に私はログアウトを行い、セッション変数を削除します。私は、アプリケーションからログアウトしていますが、私は、コードのようにポストとFBログアウトページへの投稿を行うが、FBセッションは開いたまま:私は両方試したC#sdkで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はととせずに生成されましたアクセストークンパラメータ、どちらも私のために働いていません。

+1

。この記事をチェックしてください。http://blog.prabir.me/post/Facebook-CSharp-SDK-Logout.aspx –

+0

はすでにことを確認Pranay、役に立つものが見つからない、FacebookAuthClient()クラスのみFacebookClient()クラスを持っていない – Biljanka

+0

FBでバグが起こっていますが、コードはすべて問題ないですか? – Biljanka

答えて

2

前回のブログ投稿以降にFacebookのログアウトに変更がありました。ここでログアウトする方法です。

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

// redirect to logoutUrl.AbsoluteUri 

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

+1

facebook.com – Biljanka

+0

を開いたときに、開始ページまたはコールバックページをnexパラメータに入れても、fbユーザーセッションはまだアクティブです。私の間違いは、私が投稿をしていて、ログアウトURLにリダイレクトしていないということでした。 – Biljanka

+0

ユーザーにまだアクセストークンがない場合はどうなりますか?彼が "スキップ"ボタンを押すか、ウィンドウのxマークを押した場合はどうなりますか? (これは、oauthプロセス中にユーザーがキャンセルされたことを意味します)access_tokenを空白のままにする必要がありますか? –

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"); 
    } 
関連する問題