Facebook app_data

Может кто-нибудь объяснить мне, как использовать facebook app_data, который является частью подписанного запроса?

http://developers.facebook.com/docs/authentication/signed_request/

Документация расплывчата. Я не могу понять, как на самом деле использовать поле app_data. Я хочу иметь возможность передавать данные приложения в приложение, когда оно добавлено на страницу, чтобы содержимое, отображаемое на нем, было релевантным для страницы Facebook.

например, я хочу, чтобы профиль пользователя на моем сайте отображался только на этой странице на facebook. Для этого я хочу отправить идентификатор пользователя в подписанный fb запрос, когда пользователь добавит приложение на свою страницу. Затем в любое время, когда страница будет посещена, я вытащил данные приложения и запустил некоторый php, чтобы отобразить правильный профиль.

Могу ли я сделать это с помощью app_data или это невозможно?

Ответ 1

Из документации, которую вы указали

Данные приложения

Строка JSON, содержащая содержимое параметра строки запроса, также называемое app_data. Обычно указывается, когда приложение создало ссылку для передачи некоторых данных самому себе. Доступно только в том случае, если ваше приложение является iframe, загруженным на вкладку "Страница".

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

И если пользователь посещает некоторую страницу (и вкладку приложения) напрямую, то вы не получите поле app_data.

Как только пользователь установил ваше приложение (и предоставил минимальные разрешения вашего приложения) на любой из своих страниц, у вас всегда есть поля page_id и user_id в signed_request, которые Facebook отправит в ваше приложение, как в canvas apps (no page_id), так и в приложениях с вкладками страниц.

Для того, что вы хотите сделать, вы можете просто прочитать signed_request, а затем узнать page_id и отобразить данные соответственно, вам даже не нужно использовать user_id.

Надеюсь, это ответит на ваш вопрос. При необходимости просите разъяснения.