2012-06-28 4 views
2

Я уверен, что я просто пропускаю что-то в документах API Facebook. В принципе, после того, как я загрузил FB-график, мне нужно знать, активен ли сеанс ... Я не могу просто предположить, что они вышли из системы и просто перерисовываются, если они вошли в систему после того, как «auth.statusChange» событие запускается. Мне нужно знать сразу с места.Facebook API - обнаружение, если сеанс активен ИЛИ НЕ активен

Ниже приведен код, который я использовал. Самое главное, что FB.getLoginStatus/getAuthResponse/getAccessToken не работает, как я ожидал; по существу, где он указывает, когда вызывается, независимо от того, вошли ли они в систему или нет.

 
(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)); 

Любая помощь очень ценится. :)

+0

'не работает, как я ожидал'? Они работают так, как должны. Какие проблемы у вас с ними? – Dhiraj

+0

Мне нужен метод, чтобы либо возвращать Boolean, если пользователь вошел в систему, либо возвращать литерал объекта из данных сеанса (возможно, со статусом состояния), который указывает, что вошел в систему. Вместо этого кажется, что метод первоначально предполагает, что пользователь вышел из системы и подписаться на изменение статуса авторизации, чтобы уведомить вас; который изначально уведомляет вас только о том, что они вошли в систему, иначе ничего не делает. Это проблема, с которой я столкнулся, когда мне нужно знать, вошли ли они в систему или нет. Наверное, вы могли бы сказать, что я хочу сделать это синхронно. –

ответ

0

Спасибо за помощь, но я нашел ответ на другой пост: https://stackoverflow.com/a/7765144/560686

Видимо, когда вы все еще в режиме Sandbox FB.getLoginStatus() срабатывает обратный вызов только тогда, когда они вошли в систему, но не когда они вышли из системы. Чтобы заставить это работать, мне пришлось отключить режим «Песочница». :)

Смежные вопросы