Когда я хочу выйти из системы с моего сайта, я использую:
$logoutUrl = $facebook->getLogoutUrl(array('next' => 'logout.php'));
И $logoutUrl
отображает правильную ссылку, однако она не перенаправляет меня на указанный в следующем URL- $logoutUrl
. Он перенаправляет меня на страницу, которая начала выход из системы.
Похоже, что в Интернете очень много статей, но все они используют одни и те же методы, и для многих людей они не работают. Как правильно выйти из учетной записи пользователя на facebook, а затем выполнить мой обычный скрипт выхода?
EDIT: Это сработало, но по-прежнему требуется какой-то выход из системы, не основанный на javascriptSDK.
<a id="logout" href="logout.php" onclick="FB.logout(function(response) { window.location = 'logout.php' }); return false;" title="<?php echo $lang['logout']; ?>"><?php echo $lang['logout']; ?></a>
Вы должны использовать абсолютные URL-адреса. например
// (or https://) $here = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $next = preg_replace('~#.*$~s', '', $here); $next = preg_replace('~\?.*$~s', '', $next); $next = preg_replace('~/[^/]*$~s', '/logout.php', $next); $logoutUrl = $facebook->getLogoutUrl(array('next' => $next));
Или просто:
$logoutUrl = $facebook->getLogoutUrl(array('next' => 'http://...../logout.php'));
Я знаю, что это устарело, но причина, по которой getLogoutUrl () не перенаправляется на ваш «следующий» URL-адрес, заключается в том, что он не регистрирует пользователя и не перенаправляет его вообще. Он просто дает вам правильный URL-адрес, который вам нужно использовать для выхода из системы и перенаправления (например, заголовок («Location: $ logoutUrl»)). После перенаправления пользователь выйдет из системы, и ваш «следующий» URL-адрес будет вызван.
Примечание. Перед вызовом getLogoutUrl () не удаляйте переменные сеанса Facebook (например, destroySession). Если вы это сделаете, токен доступа, включенный в возвращаемый url, будет равен 0 вместо вашего токена доступа.
Документация не слишком понятна этому, но функция очень правильно названа.