$ Facebook-> getLogoutUrl ();ссылка не выходит из Facebook пользователя - PullRequest
8 голосов
/ 07 октября 2011

Моя текущая пользовательская история такова, что user1 вошел на мой сайт и в facebook (эти учетные записи подключены и т. Д.).

Пользователь1 выходит из моего сайта, но не из Facebook.

После этого user2 входит в свою учетную запись, но перенесенный сеанс от пользователя user1 связывается с взаимодействием пользователя user2 с моим сайтом и тем, кого они публикуют.

Таким образом, чтобы исправить это, я проверил, действительно ли пользователь, вошедший в систему, владеет в настоящее время вошедшим в систему Facebook (это приведет к тому, что он выйдет из Facebook, выйдет из системы и т. Д.), И он показывает ссылку, которая должна позволить пользователю войти в систему. вне ...

После нажатия на ссылку они переходят на Facebook и возвращаются на сайт. Но если вы откроете новую вкладку и зайдете на Facebook, User1 все еще будет в системе.

Как я могу заставить эту ссылку работать ... что происходит. Это ошибка с API или что? ...

Редактировать: я продолжил тестирование с использованием загруженных идентификаторов пользователей и с действительными токенами доступа, но мне еще предстоит заставить работать ссылку выхода из системы.

Ответы [ 3 ]

5 голосов
/ 23 ноября 2012

Немного поздно, но вот мой вклад:

Используйте параметры при создании URL выхода из системы, там перенаправляются на страницу, на которой вы уничтожаете сеанс, используя для этого функцию API Facebook.

Вот пример:

$logoutUrl = $facebook->getLogoutUrl(array("next" => "http://mydomain.com/page4logout"));

В page4logout вы можете создать экземпляр объекта facebook и выполнить следующее:

$facebook->destroySession();

После этого вы можете сделать перенаправление.

4 голосов
/ 31 мая 2012

удалить файл cookie и сессию вручнуюВот мое решение, как я решил проблему некоторое время назад, он думает, что это ошибка 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']);

$ this-> getAppID - ваш идентификатор приложения Facebook, должно быть ясно; o)

0 голосов
/ 01 июня 2012

Один из способов проверить это - совместное использование PHP SDK и JavaScript SDK.

Когда пользователь посещает ваш сайт, вызовите FB.getLoginStatus () и убедитесь, что authResponse.userID соответствует тому, что PHP SDK возвращает в $facebook->getUser(); (вы можете сделать это с помощью вызова AJAX, если это поможет).

Вы знаете, что если идентификатор пользователя не совпадает, значит, здесь что-то не так. Вызов $ facebook-> getLogoutUrl () должен отключить пользователя как от вашего сайта, так и от Facebook, но если этого не произойдет, попробуйте использовать session_destroy() в своем коде для очистки сеансов. Затем перенаправьте пользователя обратно в $ facebook-> getLoginUrl () и заставьте его снова войти в систему. Это исправит несоответствие в идентификаторе пользователя, и вы сможете повторить процесс, когда они вернутся на ваш сайт.

Я видел, как это происходит в других приложениях, и это заставляет меня поверить, что это проблема на Facebook. Похоже, что JavaScript SDK не проверяет, действителен ли cookie (если он уже существует).

...