У меня был тот же вопрос ... вот что я сделал:
Страница перенаправления: страница, которая получит параметр и установит теги для ваших служб обмена или хотя бы теги OpenGraph. Затем эта страница создаст URL для второй страницы (Facebook Pagetab) следующим образом:
//{facebook-page.link}/?sk=app_{your-app-id}&app_data=X
Чтобы получить {facebook-page.link}, просмотрите этот пример запроса:
Смотрите пример: https://graph.facebook.com/200866110154
Смотрите документацию: https://developers.facebook.com/docs/reference/php/facebook-api/
Не делайте перенаправление немедленно каждый раз, не будет работать. Вместо этого сделайте перенаправление на определенных условиях. Пример:
if (strpos($_SERVER['HTTP_REFERER'], '//www.facebook.com/')) {
drupal_add_js('window.location = "' . $url_final . '"', 'inline');
}
Помните, что для создания URL-адреса используйте атрибут ссылки на страницу, полученный из Facebook, а не идентификатор страницы, в противном случае вы потеряете параметр app_data в подписанном запросе.
- Facebook Pagetab: страница, вызываемая внутри Iframe вкладки страницы Facebook. Эта страница получит запрос SignedRequest с app_data и загрузит определенный контент, который увидит конечный пользователь.
Помните, что app_data также может быть массивом (или сериализованным объектом):
app_data[var1]=value1&app_data[var2]=value2
Подсказка: Если вы используете Drupal, вы можете избежать окончательного перенаправления, просто перезапишите $ _GET ['q'] на нужную страницу. Таким образом, вы не загружаете Drupal только для повторного перенаправления. Вы можете добиться этого, используя hook_init.
Подсказка: Сохраните свои запросы в API Facebook, чтобы ускорить будущие звонки. Каждый запрос к API графа занимает минимум 300 мс. Доступ к базе данных, очевидно, быстрее.