Tom Doe
Tom Doe

Reputation: 906

Facebook API - Detect if session is active OR NOT active

I'm sure I'm simply overlooking something in the Facebook API docs. Basically, after I've loaded the FB Graph, I need to know if the session is active... I cannot simply assume they're logged out and simply re-render if they're logged in once the 'auth.statusChange' event is triggered. I need to know right off the bat.

Below is the code that I've used. Most importantly the FB.getLoginStatus/getAuthResponse/getAccessToken don't work like I'd expect; essentially where it indicates, when invoked, whether they're logged in or out.

(function(d) {

    // Create fb-root
    var fb_root = document.createElement('div');
        fb_root.id = "fb-root";
        document.getElementsByTagName('body')[0].appendChild( fb_root );

    // Load FB Async
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);

    // App config-data
    var config = {
        appId : XXXX,
        cookie: true,
        status: true,
        frictionlessRequests: true
    };

    window.fbAsyncInit = function() {
        // This won't work.
        // I can't assume they're logged out and rely on this to tell me they're logged in.
        FB.Event.subscribe('auth.statusChange', function(response) {});

        // Init
        FB.init(config);

        // These do not inidicate if the user is logged out :(
        FB.getLoginStatus(function(response) { });
        FB.getAuthResponse(function(response) { });
        FB.getAccessToken(function(response) { });
    };

}(document));

Any help is much appreciated. :)

Upvotes: 2

Views: 1189

Answers (1)

Tom Doe
Tom Doe

Reputation: 906

Thanks for the help, but I found the answer on another post: https://stackoverflow.com/a/7765144/560686

Apparently, when you're still in Sandbox mode FB.getLoginStatus() will fire the callback only when they're logged in, but not when they're logged out. To get this to work, I had to Disable the Sandbox mode. :)

Upvotes: 0

Related Questions