согласование Facebook PHP SDK с Zend Framework - PullRequest
2 голосов
/ 28 ноября 2011

, поэтому я использую Facebook PHP SDK для аутентификации моего пользователя ....

и пытаюсь выйти из системы, используя метод destroySession() в base_facebook.php

Вот некоторые важные выдержки из файла base_facebook.php в PHP SDK: https://github.com/facebook/php-sdk/blob/master/src/base_facebook.php

      public function destroySession() {
        $this->setAccessToken(null);
        $this->user = 0;
        $this->clearAllPersistentData();
      }

  protected function clearAllPersistentData() {
    foreach (self::$kSupportedKeys as $key) {
      $this->clearPersistentData($key);
    }
  }

  protected function clearPersistentData($key) {
    if (!in_array($key, self::$kSupportedKeys)) {
      self::errorLog('Unsupported key passed to clearPersistentData.');
      return;
    }

    $session_var_name = $this->constructSessionVariableName($key);
    unset($_SESSION[$session_var_name]);
  }

но каждый раз, когда я пытаюсь это сделать, Zend Framework будет жаловаться

Fatal error: Uncaught exception 'Zend_Session_Exception' with message 'session has already been started by session.auto-start or session_start()' 

Zend_Session_Exception: session has already been started by session.auto-start or session_start() 

Как мнеочистить сеанс в Facebook, не вызывая все эти ошибки?

Ответы [ 2 ]

1 голос
/ 06 января 2012

Чтобы заставить его работать с Zend_Session, я изменил исходный код facebook.php и заменил

    session_start()

от

    $this->session = new Zend_Session_Namespace();
    $this->session->fb = array();

Затем замените все вхождения

    $_SESSION"

от

    $this->session->fb
0 голосов
/ 11 декабря 2011

Необходимым условием для использования Zend_Session является то, что сеанс еще не должен быть инициирован.Facebook инициирует это.В качестве решения, вызовите session_write_close () перед использованием Zend_Session.

В качестве альтернативы, вызовите session_destroy () , чтобы выйти из системы пользователя Facebook.Уничтожает все данные, связанные с текущим сеансом.

...