PHP-сессия с GET, имеющая проблемы с IE8 и приложением Facebook - PullRequest
1 голос
/ 14 июля 2011

Я занимаюсь разработкой приложения для Facebook. Я использовал сеансы с файлами cookie, и все работало нормально. Внезапно IE8 имеет некоторые ошибки с файлами cookie. Он блокировал мой сайт, потому что он был в iframe. Итак, я узнал о P3P Header. Я использовал это правильно, и проблема решена. Но теперь клиент хочет, чтобы я использовал GET, если файлы cookie недоступны. Я делаю это, но теперь я сталкиваюсь с проблемой, что у Facebook PHP Sdk есть проблема в своей сессии. Его метод getSession не получает сеанс и перенаправляет его для аутентификации пользователя, а затем перенаправляет обратно в приложение. но при этом он теряет переменную GET PHPSESSID. Ниже приведен поток stackoverflow, в котором есть нечто похожее, так что, может быть, для вас, ребята, следующее полезно. Facebook PHP SDK getSession () не может получить сессию. Проблема с cookie?

Этот код используется для сеансов с GET, если файлы cookie недоступны:

ini_set( 'session.use_cookies_only', false );
ini_set( 'session.use_trans_sid', true );

session_start();

Это код для доступа к fb. сессия с PHP Sdk.:

        $facebook = new Facebook(array(
    'appId'  => FACEBOOK_APPID,
    'secret' => FACEBOOK_SECRET,
    'cookie' => true,
    ));
    $this->facebook=$facebook;

    // We may or may not have this data based on a $_GET or $_COOKIE based session.
    // If we get a session here, it means we found a correctly signed session using
    // the Application Secret only Facebook and the Application know. We dont know
    // if it is still valid until we make an API call using the session. A session
    // can become invalid if it has already expired (should not be getting the
    // session back in this case) or if the user logged out of Facebook.
    $this->session = $facebook->getSession();

Пожалуйста, скажите, можете ли вы дать мне какую-либо подсказку.

спасибо всем вам

1 Ответ

1 голос
/ 14 июля 2011

Это кажется бесконечной проблемой с Facebook API.Там функциональность сеанса нарушается случайным образом, и вы можете многое с этим поделать.Что я обычно делаю в своих приложениях, так это отключаю файлы cookie и сохраняю сеанс facebook в своем собственном приложении SESSION.Существует родительский контроллер, который вызывается при каждом запросе, который отвечает за проверку SESSION.Если найдена действительная СЕССИЯ, для нее устанавливается объект сеанса Facebook.Это гарантирует, что верный сеанс будет возвращен при вызове getSession ().

...