Intereting Posts
Как вы указываете предложение IN в динамическом запросе с использованием переменной? Как проверить целочисленные значения, чтобы избежать SQL-инъекций? Перестроить модель без данных потерь в MySQL для Symfony Yii2 – Как сделать AutoLoad для пользовательского класса? Подключитесь к Facebook-чату, используя PHP? Отправка полученных заказов woocommerce дилерам, отправляющим уведомления по электронной почте Отменить PHP-скрипт с XHR? Как избежать неработающих ссылок в общем файле заголовка Xdebug установлен, но не отображается в Phpinfo для Xampp Просмотр SELECTion из нескольких таблиц, сгруппированных в jQuery UI-аккордеонном виджете Заголовок Content-Type: application / octet-stream возвращает встроенный текст / html Захват хэша (#) из URL-адреса в CodeIgniter Недействительный JSON в Chrome, без проблем в Firefox (так странно!) алгоритм, который будет принимать числа или слова и находить все возможные комбинации Как я могу получить выбранные строки данных / элементов в CheckboxColumn Gridview – Yii2

Как выходить из системы с помощью Facebook Connect в PHP и Zend?

Я пытаюсь создать приложение Connect с помощью PHP и Zend Framework. У меня также есть система аутентификации пользователей на основе Zend_Auth. Теперь я могу войти в систему, используя Facebook, но выход из системы не работает.

Мне нужно очистить идентификатор Zend_Auth, а также удалить всю информацию для входа в Facebook. Какой был бы лучший способ сделать это?

Я попробовал facebook_client->expire_session() и facebook_client->clear_cookie_state(); вместе, а также facebook_client->logout($next) после вызова Zend_Auth::getInstance()->clearIdentity()

Ни один из них, похоже, не работает.

Сначала вы должны вызвать выход из системы javascript, а затем отправить их в скрипт выхода php. Итак, вызовите .js:

 FB.Connect.logoutAndRedirect("/path/to/zend/logout/controller"); 

Вы увидите модальное всплывающее окно, в котором говорится: «Вы выходите из этого сайта и facebook *. Вы будете перенаправлены туда, где находится ваш скрипт выхода:

 try { $facebook->expire_session(); } catch (FacebookRestClientException $e) { //you'll want to catch this //it fails all the time } 

Обычно я вызываю эту функцию в скрипте выхода PHP, чтобы быть в безопасности:

 /** * Remove the local Facebook cookies that get set manually * * @return void */ protected function _killFacebookCookies() { // get your api key $apiKey = $this->getConfig()->getApiKey(); // get name of the cookie $cookie = $this->getConfig()->getCookieName(); $cookies = array('user', 'session_key', 'expires', 'ss'); foreach ($cookies as $name) { setcookie($apiKey . '_' . $name, false, time() - 3600); unset($_COOKIE[$apiKey . '_' . $name]); } setcookie($apiKey, false, time() - 3600); unset($_COOKIE[$apiKey]); } с /** * Remove the local Facebook cookies that get set manually * * @return void */ protected function _killFacebookCookies() { // get your api key $apiKey = $this->getConfig()->getApiKey(); // get name of the cookie $cookie = $this->getConfig()->getCookieName(); $cookies = array('user', 'session_key', 'expires', 'ss'); foreach ($cookies as $name) { setcookie($apiKey . '_' . $name, false, time() - 3600); unset($_COOKIE[$apiKey . '_' . $name]); } setcookie($apiKey, false, time() - 3600); unset($_COOKIE[$apiKey]); } 

Вы можете выйти из учетной записи пользователя facebook и перенаправить пользователя на страницу своего сайта с помощью PHP-кода следующим образом:

header («Местоположение:». $ facebook-> getLogoutUrl (массив ('next' => "http://yourwebsite.com/redirectAfterFacebookLogout.php")));

(NEW FACEBOOK SDK) Для меня getconfig () не будет работать. Поэтому мне пришлось найти новые функции из файла base_facebook.php и добавить в него этот бит кода. Затем вызовите его в своем вызывающем файле. Прежде чем вы это сделаете, вызовите $ facebook-> destroySession ();

  public function _killFacebookCookies() { // get your api key $apiKey = $this->getAppId(); // get name of the cookie $cookie = $this->getSignedRequestCookieName(); $cookies = array('user', 'session_key', 'expires', 'ss'); foreach ($cookies as $name) { setcookie($apiKey . '_' . $name, false, time() - 3600); unset($_COOKIE[$apiKey . '_' . $name]); } setcookie($apiKey, false, time() - 3600); unset($_COOKIE[$apiKey]); } с  public function _killFacebookCookies() { // get your api key $apiKey = $this->getAppId(); // get name of the cookie $cookie = $this->getSignedRequestCookieName(); $cookies = array('user', 'session_key', 'expires', 'ss'); foreach ($cookies as $name) { setcookie($apiKey . '_' . $name, false, time() - 3600); unset($_COOKIE[$apiKey . '_' . $name]); } setcookie($apiKey, false, time() - 3600); unset($_COOKIE[$apiKey]); }