Я использую приложение Facebook Connect .Представьте, что это своего рода приложение, где пользователи заходят на мой сайт, нажимают кнопку подключения, входят в Facebook, возвращаются на мой сайт и ждут подключения другого пользователя.
Я использую offline_access
параметр при подключении.Как только пользователь вернется на мой сайт, мне нужно очистить все сеансовые куки.Если сеанс не был успешно удален, и следующий пользователь приходит и подключается, пользователь не получит страницу входа, вместо этого он сразу же перенаправит на мой URL-адрес ответа после принятия моего последнего состояния сеанса.
Я пыталсяэти методы вместе, чтобы очистить сеанс:
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]);
}
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-42000);
setcookie($name, '', time()-42000, '/');
}
}
С помощью вышеуказанных методов что-то работает, но очищаются не все сеансы, особенно куки-файлы, специфичные для домена Facebook.Итак, чтобы удалить куки Facebook, я попробовал следующие статические методы, чтобы проверить, как они работают.Но даже это не помогает.
setcookie('L', '', time()-42000,"/",".facebook.com");
setcookie('act', '', time()-42000,"/",".facebook.com");
setcookie('c_user', '', time()-42000,"/",".facebook.com");
setcookie('datr', '', time()-42000,"/",".facebook.com");
setcookie('locale', '', time()-42000,"/",".facebook.com");
setcookie('lu', '', time()-42000,"/",".facebook.com");
setcookie('pk', '', time()-42000,"/",".facebook.com");
setcookie('p', '', time()-42000,"/",".facebook.com");
setcookie('presence', '', time()-42000,"/",".facebook.com");
setcookie('s', '', time()-42000,"/",".facebook.com");
setcookie('sct', '', time()-42000,"/",".facebook.com");
setcookie('x-src', '', time()-42000,"/",".facebook.com");
setcookie('xs', '', time()-42000,"/",".facebook.com");
И, наконец, я попробовал обычные методы,
unset($_SESSION['fb_243155855719532_access_token']);
unset($_SESSION['fb_243155855719532_code']);
unset($_SESSION['fb_243155855719532_user_id']);
unset($_SESSION['fb_243155855719532_state']);
// Finally, destroy the session.
session_unset();
session_destroy();exit;
Уничтожение сеансов работает, но сеансы Facebook не очищаются.Если я попытаюсь очистить сеансовые куки-файлы с помощью надстройки Firefox Web Dev, она будет работать очень умно.