Отслеживание сеанса Facebook при навигации по страницам в приложениях Facebook на основе iframe - PullRequest
0 голосов
/ 11 мая 2010

Я работаю над основанным на iframe приложением canvas и столкнулся с серьезным препятствием на пути поиска хорошего способа отслеживания сеанса Facebook при переходе между страницами внутри iframe. При первой загрузке страницы Facebook передает все необходимые параметры fb_sig на ваш URL обратного вызова через строку запроса. При последующих загрузках страницы (например, после нажатия на ссылку в вашем приложении) кажется, что вы должны выполнить одно из следующих действий, чтобы сохранить сведения о сеансе Facebook:

  1. Используйте target="_top" в ссылках и обновляйте всю страницу Facebook при каждом запросе. Таким образом, при загрузке iframe передается новый набор fb_sig параметров. Но это влечет за собой затраты на загрузку всего, что находится за пределами iframe, каждый раз, когда вы меняете страницы.

  2. Вручную добавьте все параметры fb_sig, полученные с первой страницы, к URL-адресу всех дополнительных страниц. Это довольно уродливо, и у вас останется устаревшая информация, которая может быть не точной. Вы продолжаете использовать первые значения, полученные от Facebook, но с тех пор эти значения могли измениться (например, выход пользователя из системы или истечение срока действия ключа сеанса), и у вас не будет возможности узнать об этом.

  3. Сохраните информацию в файле cookie и каким-либо образом проверяйте наличие новых значений при каждой загрузке страницы, обновляя ее при необходимости. Я видел эту технику в нескольких местах, но после нескольких дней поиска я не нашел ни одного примера того, как на самом деле это сделать. Возможно, клиентская библиотека PHP делает это для вас автоматически, но мое приложение использует Perl и модуль WWW::Facebook::API, и я не нашел в нем ничего такого, что решало бы эту проблему. Я также читал, что этот метод сталкивается с проблемами в некоторых браузерах (в частности, в Safari), которые не позволяют устанавливать файлы cookie в iframe, если его домен не соответствует домену родительского фрейма. Все это кажется чрезвычайно сложным и плохо документированным из-за того, что такое элементарная и необходимая способность для приложения (переход на другую страницу.)

Так как я не смог найти действительно полезных примеров того, как достичь # 3, в настоящее время я склоняюсь к # 1, какому-то несчастному компромиссу. Кто-нибудь видел хорошее, полное объяснение и пример использования # 3, который работает во всех основных браузерах? Я решил спросить, прежде чем сдаться и пойти с # 1.

1 Ответ

0 голосов
/ 07 октября 2010

Джимми Куадра, у меня была такая же проблема.Попробуйте указать абсолютный путь к приложению facebook (href = "http://apps.facebook.YOURAPP/where_you_want_to_go.php")., а затем перейдите к варианту # 1 (target =" _ top ")

Надеюсь, это решит вашу проблему.

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