Обновляющая сессия Facebook из iframe приложения

Вы можете использовать interp2, если у вас есть (x, y), которые определены для senmat. Читайте про interp2. Если вы хотите, чтобы только senmat улучшил, используйте imresize.

A = imresize(senmat,[100,100]) ;
surf(A)

enter image description here

13
задан zombat 7 May 2009 в 17:38
поделиться

1 ответ

Победа принадлежит мне!

Существует почти полностью недокументированная функция Facebook, связанная с сессиями iframe, и я обнаружил расплывчатую ссылку на в своем исследовании. Однако эта страница не очень хорошо объясняет это, и только после нескольких часов просмотра различных ключей сессии в моем iframe я смог выяснить, что происходит.

Ранее мое приложение iframe получало обычный раунд fb_whwhat параметры при начальной загрузке iframe. Итак, в моем приложении я делал это при каждом запросе:

if (isset($_REQUEST['fb_sig_session_key'])) {
    $_SESSION['fb_sig_session_key'] = $_REQUEST['fb_sig_session_key'];
}
if (! empty($_SESSION['fb_sig_session_key'])) $this->facebook->api_client->session_key = $_SESSION['fb_sig_session_key'];

Этот код получал бы fb_sig_session_key при начальной загрузке приложения, и я сжимал его в локальную $ _ SESSION для использования с API. Хранить его в локальном сеансе необходимо, потому что fb_sig_session_key никогда не будет передан снова, пока вы не перезагрузите весь iframe приложения.

Таким образом, проблемы возникли, когда истек срок действия этого ключа сеанса примерно через час.

После просмотра расплывчатого На странице справки я начал изучать все переменные $ _ REQUEST , которые я получал. Оказывается, что даже на внутренней ссылке внутри вашего приложения iframe Facebook изменяет запрос на передачу некоторых параметров. По какой-то причине они имеют совершенно другой, но также действительный сеансовый ключ , который поставляется вместе с каждым запросом iframe!

Этот параметр назван в честь вашего API-ключа приложения Facebook. Поэтому, если ключом API вашего приложения является «xyz123», каждый запрос внутри вашего iframe получает параметр с именем xyz123_session_key (а также несколько других, как xyz123_expires и xyz123_user ).

После просмотра связанного времени истечения для основного сеанса (первоначальный fb_sig_session_key ) и этого сеанса только для iframe ( xyz123_session_key ), свет в конце туннеля появился: время истечения срока действия сеансового ключа только для iframe фактически периодически обновляется . Я не определил, когда или как (я предполагаю, что это Aing-пинг в какой-то момент), но тем не менее он обновляется.

Я ждал, когда истечет исходный сеанс fb_sig_session_key , и, конечно, друг связанные страницы в моем приложении начали кашлять ошибки. В этот момент я переключил свой локально сохраненный сеансовый ключ на новый iframe-только xyz123_session_key , и проблема была решена. Этот сеанс работает так же хорошо, как и оригинал!

Итак, мое последнее исправление кода заключается в локальном сохранении ключа сеанса следующим образом:

$iframeSessionKeyName = $CONFIG['facebook']['apiKey'] . '_session_key';
if (isset($_REQUEST[$iframeSessionKeyName])) {
    $_SESSION['fb_sig_session_key'] = $_REQUEST[$iframeSessionKeyName];
}
else if (isset($_REQUEST['fb_sig_session_key'])) {
    $_SESSION['fb_sig_session_key'] = $_REQUEST['fb_sig_session_key'];
}
if (! empty($_SESSION['fb_sig_session_key'])) $this->facebook->api_client->session_key = $_SESSION['fb_sig_session_key'];

Это отдает предпочтение ключу «только для фрейма».

Редактировать: Мое исходное предположение о том, что ключ "iframe-only" был обновлен с помощью какого-либо Ajax-метода, было неверным, оказалось, что эти значения установлены в cookie в Facebook. Это приводит к некоторым междоменным проблемам при использовании этих файлов cookie. Установка политики cookie P3P облегчит это с большинством браузеров, кроме Safari. Для Safari все еще нет хорошей работы.

Ключ был обновлен с помощью какого-то Ajax-метода, это неправильно, оказывается, эти значения установлены в куки в Facebook. Это приводит к некоторым междоменным проблемам при использовании этих файлов cookie. Установка политики cookie P3P облегчит это с большинством браузеров, кроме Safari. Для Safari все еще нет хорошей работы.

Ключ был обновлен с помощью какого-то Ajax-метода, это неправильно, оказывается, эти значения установлены в куки в Facebook. Это приводит к некоторым междоменным проблемам при использовании этих файлов cookie. Установка политики cookie P3P облегчит это с большинством браузеров, кроме Safari. Для Safari все еще нет хорошей работы.

21
ответ дан 1 December 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: