2012-02-08 11 views
1

Facebook Javascript SDKを使用してクライアント側認証を実装しました。 Application_AuthenticateRequestイベントのFacebookWebコンテキストをチェックして、ユーザーがログインしているかどうかを確認し、それに応じてHttpCoontext.Current.User IPrincipalを設定します。サーバー側のFacebook Webコンテキストをクリア

データベースからユーザーを削除する場合は、FacebookのWebコンテキストを削除して、HttpContext.Current.User.IsAuthenticatedがfalseであることを確認します。また、ユーザーが私のアプリケーションを認証解除すると、私はFacebookのWebコンテキストを削除したいと思います。私はFacebookからログアウトしたくない - 単にFacebookのWebコンテキストを削除して、セッションはもう認証されない。

サーバーサイドでどうすればよいですか?

答えて

1

私が見つけた最良の方法は、fbsr_ {あなたのアプリID}のクッキーを手動で削除することです。もちろん、これは、ユーザーがあなたのアプリとやり取りしているときにのみ行うことができます。 facebook.comでアプリを削除したり他の方法で権限を解除したりすると、次にアプリを訪れるまでそのCookieを削除することはできません。ここで

は、私はFacebookのC#SDKでこれを行うために使用するいくつかのコードです:

string cookieName = "fbsr_" + FacebookApplication.Current.AppId; 
if (Request.Cookies[cookieName] != null) { 
    HttpCookie myCookie = new HttpCookie(cookieName); 
    myCookie.Expires = DateTime.Now.AddDays(-1d); 
    Response.Cookies.Add(myCookie); 
} 

私が使用しているユーザーのアクセストークンが無効であることを示すバックのFacebookからのOAuth例外を取得するたびに、私はこれを行います。その後、私はユーザーに再認証を強制します。

+0

私はこの方法を試しましたが、FB.initが呼び出されるたびにfbsrクッキーが再作成されるようです。私がFirebugのクッキーを手動で削除してリフレッシュしても、戻ってきます! – reach4thelasers

関連する問題