Моя текущая история пользователей заключается в том, что user1 зарегистрирован на моем сайте и в facebook (эти учетные записи подключены и т. Д.).
Пользователь1 выходит из моего сайта, но не в facebook.
После того, как этот пользователь2 войдет в свою учетную запись, но левый сеанс от user1 добавит винты с взаимодействием user2 с моим сайтом и кто они публикуют.
Поэтому, чтобы исправить это, я попросил его проверить, действительно ли пользователь, который вошел в систему, в настоящее время зарегистрирован в facebook (это приведет к тому, что они перейдут на выход в facebook и т. Д.), И он покажет ссылку, которая должна позволить пользователю выйти из системы. ,
После нажатия ссылки они отправляются на facebook и возвращаются на сайт. Но если вы откроете новую вкладку и перейдете на facebook, то User1 все равно войдет в систему.
Как я могу заставить эту ссылку работать. Что происходит. Это ошибка с api или что? …
Редактирование: я продолжал тестирование с загрузкой идентификатора пользователя с ценными данными и с действительными токенами доступа, но мне еще нужно, чтобы ссылка на выход из системы работала.
Немного поздно, но здесь идет мой вклад:
Используйте параметры, когда вы создаете URL-адрес выхода, там перенаправляется на страницу, в которой вы уничтожаете сеанс, используя функцию Facebook API для этого.
Вот пример:
$logoutUrl = $facebook->getLogoutUrl(array("next" => "http://mydomain.com/page4logout"));
В page4logout вы можете указать объект facebook и выполнить следующее:
$facebook->destroySession();
После этого вы можете сделать перенаправление.
удалите файл cookie и сеанс facebook вручную. Вот мое решение, как я решил проблему некоторое время назад, она думает, что это ошибка Facebook:
setcookie('fbs_'.$this->getAppId(), '', time()-100, '/', $_SERVER["SERVER_NAME"]); unset($_SESSION['fb_'.$this->getAppId().'_code']); unset($_SESSION['fb_'.$this->getAppId().'_access_token']); unset($_SESSION['fb_'.$this->getAppId().'_user_id']); unset($_SESSION['fb_'.$this->getAppId().'_state']);
сsetcookie('fbs_'.$this->getAppId(), '', time()-100, '/', $_SERVER["SERVER_NAME"]); unset($_SESSION['fb_'.$this->getAppId().'_code']); unset($_SESSION['fb_'.$this->getAppId().'_access_token']); unset($_SESSION['fb_'.$this->getAppId().'_user_id']); unset($_SESSION['fb_'.$this->getAppId().'_state']);
сsetcookie('fbs_'.$this->getAppId(), '', time()-100, '/', $_SERVER["SERVER_NAME"]); unset($_SESSION['fb_'.$this->getAppId().'_code']); unset($_SESSION['fb_'.$this->getAppId().'_access_token']); unset($_SESSION['fb_'.$this->getAppId().'_user_id']); unset($_SESSION['fb_'.$this->getAppId().'_state']);
сsetcookie('fbs_'.$this->getAppId(), '', time()-100, '/', $_SERVER["SERVER_NAME"]); unset($_SESSION['fb_'.$this->getAppId().'_code']); unset($_SESSION['fb_'.$this->getAppId().'_access_token']); unset($_SESSION['fb_'.$this->getAppId().'_user_id']); unset($_SESSION['fb_'.$this->getAppId().'_state']);
$ this-> getAppID – ваш идентификатор приложения Facebook, должен быть ясным; o)
Один из способов проверить это – с помощью SDK SDK и JavaScript SDK.
Когда пользователь посещает ваш сайт, вызовите FB.getLoginStatus () и убедитесь, что authResponse.userID
соответствует тому, что возвращает SDK PHP в $facebook->getUser();
(вы можете сделать это с помощью вызова AJAX, если это поможет).
Вы знаете, что если идентификатор пользователя не соответствует, то здесь что-то не так. Вызов $ facebook-> getLogoutUrl () должен регистрировать пользователя как на вашем сайте, так и на facebook, но если это не так, попробуйте использовать session_destroy()
в своем коде, чтобы очистить сеансы. Затем перенаправите пользователя обратно в $ facebook-> getLoginUrl () и снова запустите их. Это исправит неправильное совпадение в ID пользователя, и вы сможете повторить процесс, когда они вернутся на ваш сайт.
Я видел это в других приложениях, что заставляет меня думать, что это проблема с facebook. JavaScript SDK, похоже, не проверяет, сохраняется ли файл cookie (если он уже существует).