我正在用PHP开发我的第一个Facebook应用程序,并且想知道Facebook上的页面是否可被应用程序检测到。我打算在几个不同的页面上显示应用程序,并希望应用程序为每个页面显示不同的内容。这样我只需要用户接受一个中央应用程序的权限,而不是几个不同的应用程序。
答案 0 :(得分:7)
是。有signed_request
(POST),页面ID ...您无法获取整个URL,因为请求通过Facebook代理。以下是如何执行此操作的方法,稍后只根据Page ID ...
$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, '-_', '+/'));
}
}
编辑:
就像你说的那样,你需要为每个用户只授权一次app,你就可以在所有页面上使用它(我有数百个)。当用户“连接”到app时,这是signed_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,您还将获得用于访问用户信息的令牌(对于您有权限的用户)。
答案 1 :(得分:1)
您在创建第一个应用时在开发者应用中设置此位置。转到facebook.com/developers并创建一个新应用程序,您将能够设置画布应用程序的位置,然后将其加载到app.facebook.com/YOUR_APP_NAME。