Да. Существует signed_request
(POST) с идентификатором страницы ... Вы не можете получить полный URL-адрес, поскольку запрос выполняется через прокси-сервер Facebook. Вот способ, которым вы можете сделать это, а потом просто обслуживать контент на основе идентификатора страницы ...
$signed_request = $_POST['signed_request'];
$response = Facebook::parse($signed_request);
$page_id = $response['page']['id'];
(это только часть моего класса)
class Facebook {
// Facebook signed request parser
public static function parse($signed)
{
list($encoded, $payload) = explode('.', $signed, 2);
$sig = Facebook::base64_url_decode($encoded);
$data = json_decode(Facebook::base64_url_decode($payload), true);
if(strtoupper($data['algorithm']) !== 'HMAC-SHA256'){
error_log('Unknown algorithm. Expected HMAC-SHA256');
return false;
}
return $data;
}
// Base64 decode for Facebook
private static function base64_url_decode($input)
{
return base64_decode(strtr($input, '-_', '+/'));
}
}
редактирование:
Как вы сказали, вам нужно авторизовать приложение только один раз для каждого пользователя, и вы сможете использовать его на всех страницах (у меня их сотни). Это вывод команды signature_request, когда пользователь «подключен» к приложению.
Array
(
[algorithm] => HMAC-SHA256
[expires] => 0
[issued_at] => 1311062412
[oauth_token] =>
[page] => Array
(
[id] => 149715315100385
[liked] => 1
[admin] => 1
)
[user] => Array
(
[country] => ba
[locale] => en_US
[age] => Array
(
[min] => 21
)
)
[user_id] => 1368368917
)
Вы можете увидеть page-> id, user_id, также вы получите токен для доступа к пользовательской информации (для тех, у кого у вас есть разрешение).