Это потому, что идентификатор пользователя все еще находится в сеансе!
Это в основном вызывает ошибку при выполнении вызовов с объектом me
(нужен активный токен доступа или что-то в этом роде).
Один из способов преодолеть это:
try {
$user_profile = $this->facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
if(DESIRED_ERR_NUM && session_id()) {
session_destroy(); // OR UNSET FB RELATED VARS ONLY
}
echo '<script>top.location.href = "' . $this->facebook->getLoginUrl(array("scope"=>"publish_stream,user_about_me","redirect_uri"=>"YOUR_URL_HERE")) . '"</script>';
exit;
}
Это НЕ рабочий код, вам нужно проверить номер ошибки И, если у вас есть сеанс, уничтожить его ИЛИ просто сбросить в нем переменные, связанные с Facebook.
Вы можете проверить, верно ли это, выполнив:
if(session_id()) {
session_destroy();
}
(обратите внимание, что это разрушит ВСЕ в сеансе не только связанные с Facebook вещи!)
Как я уже сказал, это не рабочий код, но, надеюсь, он поможет вам начать работу (это определенно можно улучшить, добавив в класс Facebook и т. Д.).