Ссылаясь на страницу приложения - PullRequest
0 голосов
/ 25 августа 2011

У меня есть приложение, добавленное на несколько фан-страниц.В идеале приложение должно работать на заказ в зависимости от ссылающейся страницы.Как я могу определить, какая страница относится к приложению.

Разработка приложения Facebook Iframe с использованием PHP.

(Вопрос также размещен на форуме разработчиков Facebook: http://forum.developers.facebook.net/viewtopic.php?id=108409)

Спасибо, Орен.

Ответы [ 4 ]

1 голос
/ 25 августа 2011

С помощью http referer у вас будет URL-адрес прокси-сервера Facebook.

В вашем случае, я думаю, вам нужно использовать идентификатор страницы (переданный в подписанном запросе).

1 голос
/ 25 августа 2011

Как объяснено в Учебнике вкладки страницы

Когда пользователь выбирает вкладку страницы, вы получите параметр signature_request с одним дополнительным параметром, страница .Этот параметр содержит объект JSON с идентификатором (идентификатор страницы текущей страницы), администратором (если пользователь является администратором страницы) и понравившимся (если пользователю понравилась страница).Как и в случае с страницей холста, вы не получите всю информацию о пользователях, доступную для вашего приложения в подписанном запросе, пока пользователь не авторизует ваше приложение.

0 голосов
/ 13 августа 2013

Используя новый php-sdk, есть более быстрый способ найти страницу, на которую вы ссылаетесь. $ facebook-> getSignedRequest () вернет массив с подписанным запросом, токеном авторизации, страницей и базовой информацией пользователя.

0 голосов
/ 25 августа 2011

В следующем фрагменте PHP будет выведен подписанный запрос, полученный на вкладке страницы. Вы найдете идентификатор страницы, необходимый в вашем случае.

<?php
$appsecret = 'Your App Secret';

$signed_request = $_REQUEST['signed_request'];
$request = $_REQUEST;

$signed_request = parse_signed_request($signed_request, $appsecret);

print_r($signed_request);

function parse_signed_request($signed_request, $secret) {
  list($encoded_sig, $payload) = explode('.', $signed_request, 2);

  // decode the data
  $sig = base64_url_decode($encoded_sig);
  $data = json_decode(base64_url_decode($payload), true);

  if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
    error_log('Unknown algorithm. Expected HMAC-SHA256');
    return null;
  }

  // check sig
  $expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
  if ($sig !== $expected_sig) {
    error_log('Bad Signed JSON signature!');
    return null;
  }

  return $data;
}

function base64_url_decode($input) {
  return base64_decode(strtr($input, '-_', '+/'));
}
?>
...