PHP / CI: Facebook Connect использует сеанс моего сайта вместо сеанса Facebook - PullRequest
0 голосов
/ 02 мая 2011

У меня есть проект CodeIgniter, использующий «официальную» реализацию PHP в Facebook Connect.По большей части это работает нормально, за исключением случаев, когда пользователь впервые разрешает разрешения.Я проследил проблему глубоко до провайдера facebook.php, функции getSession():

public function getSession() {
if (!$this->sessionLoaded) {
  $session = null;
  $write_cookie = true;

  // try loading session from signed_request in $_REQUEST
  $signedRequest = $this->getSignedRequest();
  if ($signedRequest) {
    // sig is good, use the signedRequest
    $session = $this->createSessionFromSignedRequest($signedRequest);
  }

  // try loading session from $_REQUEST
  if (!$session && isset($_REQUEST['session'])) {
    $session = json_decode(
      get_magic_quotes_gpc()
        ? stripslashes($_REQUEST['session'])
        : $_REQUEST['session'],
      true
    );
    /* HERE IS WHERE IT GOES WRONG */
    $session = $this->validateSessionObject($session);
    }

Мой комментарий в коде - это то, где что-то идет не так.Приведенный выше блок if оценивается успешно, но код внутри параметра функции json_decode() возвращает строку:

a:4:{s:10:"session_id";s:32:"********";s:10:"ip_address";s:13:"********";s:10:"user_agent";s:50:"Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2";s:13:"last_activity";i:1304286136;}edc0c222265e0a16c0f3fe8a96decf77

Это похоже на сеанс моего сайта, а не сеанс facebook, к которому он пытается получить доступ (Я могу видеть в URL).Почему это происходит?Что я могу с этим поделать?

1 Ответ

0 голосов
/ 02 мая 2011

В случае, если кто-то еще столкнется с этим конкретным препятствием, я опубликую, как я его решил:

Просто измените $_REQUEST на $_GET

Я предполагаю, что CodeIgniter каким-то образом помещает вашиинформация о сеансе в массиве $ _REQUEST ... почему это происходит, я не знаю, но это решило проблему для меня.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...