РЕДАКТИРОВАТЬ ***
Я думаю, что я не объяснил достаточно / правильно, вот шаги, когда у меня проблема с сеансом:
1.- Пользователь входит в систему с помощью jssdk и принимает мое приложение.
2.- Теперь я использую PHP-SDK для getUser ();и ограничить или показать некоторые страницы.
3.- Пользователь НЕ выходит из системы, но отзывает разрешения непосредственно из настроек профиля.
4.- Пользователь возвращается в мое приложение (не закрываястраница / браузер, конечно), и PHP-SDK по-прежнему возвращает getUser () как действительный подключенный пользователь!
5.- Как мое приложение должно знать, что пользователь отменил разрешения, если PHP-SDK говоритgetUser () является действительным идентификатором?
Мои пользователи входят в мое приложение с помощью JS-SDK и следующего кода:
FB.login(function(response) {
// handle the response
}, {scope: 'email,user_likes'});
- и это асинхронныйscript
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '****************', // App ID
channelUrl : 'localhost', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth:true
});
// Additional initialization code here
};
// Load the SDK Asynchronously
(function(d){
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);
}(document));
</script>`
Однако, когда пользователи удаляют приложение из своих настроек конфиденциальности и пытаются снова получить доступ к моему приложению, этот код по-прежнему выводит идентификатор пользователя $user = $facebook->getUser();
Я проверил facebook.php
из PHP-SDK, и есть метод, который должен unset
SESSION
, но ничего не сбрасывает.
protected function clearPersistentData($key) {
if (!in_array($key, self::$kSupportedKeys)) {
self::errorLog('Unsupported key passed to clearPersistentData.');
return;
}
$session_var_name = $this->constructSessionVariableName($key);
unset($_SESSION[$session_var_name]);
}
Это ошибка?или Facebook всегда читает сессию, даже если пользователь отозвал разрешения приложения?
Я думаю, что поведение $facebook->getUser();
должно выдавать 0
, когда пользователь не подключен к приложению, но, конечно, этоэто не то, что происходит.