Различают приложение iframe для Facebook и посещение сайта (приложение django) - PullRequest
0 голосов
/ 10 октября 2011

Я пытаюсь провести различие между веб-запросом из фрейма моего приложения в Facebook и обычным веб-посещением. Таким образом, я могу доставить правильный макет.

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

Я просмотрел всю информацию META, которая приходит с запросом iframe, и я не вижу ничего, что позволило бы мне различить эти два.

Любая помощь будет высоко ценится.

ОБНОВЛЕНИЕ: я использую AppEngine в качестве хоста приложения

1 Ответ

2 голосов
/ 10 октября 2011

Самый простой способ - создать уникальный URL-адрес для доступа из Facebook, например, если ваш веб-сайт www.site.com, затем установите на своем сервере fb.site.com или www.site.com/fb и укажите егов том же месте, что и www.site.com (и, конечно, настройте параметры приложения Facebook, чтобы использовать альтернативный URL).Затем ваш серверный код может легко проверить URL-адрес доступа, чтобы определить, нужно ли форматировать его для Facebook или отдельного веб-сайта.

Другой подход - объединить переменную сеанса на стороне сервера с некоторым JavaScript на стороне клиента.Вы можете установить переменную сеанса, когда получите параметр signature_request, а затем проверять ее при каждой загрузке страницы.Пока переменная сеанса установлена, вы выводите формат iframe и добавляете немного кода javascript на каждую страницу.Javascript проверяет, чтобы убедиться, что страница все еще находится в iframe, используя что-то вроде if (window.self!=window.top) { //inside iframe }.Если не внутри iframe, это означает, что переменная сеанса устарела, поэтому js переходит на некоторый URL-адрес, который указывает серверу очистить его, а затем повторно отобразить страницу в обычном макете.

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