SignedRequest информация о подстраницах на вкладке Facebook - PullRequest
0 голосов
/ 11 января 2012

У меня есть страница на Facebook, где я добавил вкладку Facebook (iFrame). С помощью PHP PHP SDK я получаю информацию о SignedRequest. Я использую эту информацию, чтобы проверить, понравился ли пользователь странице Facebook.

На главной странице это работает нормально, и я извлекаю массив 'page' из информации SignedRequest, но когда я нажимаю на подстраницу (используя прямой URL на том же поддомене), я больше не могу получить доступ к этой информации. 1003 *

Как мне получить эту информацию на подстранице на вкладке iFrame?

Ответы [ 3 ]

1 голос
/ 11 января 2012

Вы получаете объект signature_request только тогда, когда Facebook загружает контент вашего веб-сайта (на основе URL, который вы указали в конфигурации приложения) Любая ссылка или перенаправление внутри этого iframe теперь является вашей обязанностью отслеживать. Вы можете сделать это различными способами. 1) Запустите сеанс на ваших серверах. 2) Оставьте печенье и следите за этим. 3) Поместите что-нибудь в строку запроса (но это можно взломать).

1 голос
/ 11 января 2012

Как кажется, вы получаете подписанный запрос только при первой загрузке вкладки. Лучшим решением было бы сохранить статус liked в сеансе и использовать его на других страницах.

0 голосов
/ 18 февраля 2013

Привет, ребята, я только что нашел решение, которое работает безупречно после нескольких дней борьбы с этой проблемой, поэтому я решил поделиться им.

Это часть решения, предложенного DMCS - переменные сеанса.

Сначала вы должны сохранить ВСЕ данные подписанного запроса в переменной сеанса e следующим образом:

session_start():

$signedRequest = $facebook->getSignedRequest();

if(isset($signedRequest)) $_SESSION['signedRequest'] = $signedRequest;
 else $signedRequest = $_SESSION['signedRequest'];

Затем вы можете получить доступ ко всей информации на более поздней стадии (например, на вкладке Tab).Просто выполните print_r ($ signatureRequest), чтобы проверить, как получить доступ к необходимой информации.Например, чтобы проверить, понравилась ли пользователю страница, просто сделайте:

if (!$_SESSION['signedRequest']['page']['liked']) { 
//Content for users that haven't liked the page
} 

Здесь важно сохранить весь $ signatureRequest в переменной сеанса.Сначала я попытался сохранить только необходимую информацию в переменной сеанса, но это не сработает.Я не знаю почему.

Надеюсь, это кому-нибудь поможет.

...