views:

93

answers:

1

I implemented Facebook-Connect successfully and Im able to retrieve User-Information using the Facebook Toolkit. But I cant sucessfully logout. When I press the facebook-Logout button (which automatically appears when Im logged in, because im using the autologoutlink-property)

<fb:login-button autologoutlink="true"></fb:login-button>

I still have all five Facebook-Cookies: MyApiKey MyApiKey_ss MyApiKey_SessionKey MyApiKey_expires MyApiKey_user

After Im logged out, Im really logged out in Facebook, because I need to login again at facebook.com but isConnected() always returns true and I can still retrieve the user Information:

var connectSession = new ConnectSession(ConfigurationManager.AppSettings["ApiKey"], ConfigurationManager.AppSettings["Secret"]);
if (connectSession.IsConnected())
{
   var api = new Api(connectSession);
   filterContext.Controller.ViewData["FBUser"] = api.Users.GetInfo();
}

First I dont understand why I can still retrieve User Information even though Im not logged in anymore, and secondly: How I can delete this Cookies. The Following Code didnt work:

public static void ClearFacebookCookies()
    {
        String[] shortNames = new String[] { "_user", "_session_key", "_expires", "_ss", "" };
        HttpContext currentContext = HttpContext.Current;
        if (currentContext == null)
        {
            return;
        }
        string appKey = ConfigurationManager.AppSettings["APIKey"];
        if (appKey == null)
        {
            throw new Exception("APIKey is not defined in web.config");
        }
        foreach (var name in shortNames)
        {
            string fullName = appKey + name;
            HttpCookie cookie = currentContext.Response.Cookies[fullName];
            if (cookie != null)
            {
                cookie.Value = null;
                cookie.Expires= DateTime.Now.AddDays(-1d);
            }
            HttpCookie cookieRequest = currentContext.Request.Cookies[fullName];
            if (cookieRequest != null)
            {
                cookieRequest.Value = null;
                cookieRequest.Expires = DateTime.Now.AddDays(-1d);
            }
        }
    }// end Method
+1  A: 

This may be a shot in the dark, but did you make sure the fb.init is placed just before the closing body tag?

<script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US"&gt;&lt;/script&gt;
    <script type="text/javascript">FB.init('somekey');</script>

That's caused me problems before.

ScottE