粉丝页面上的Facebook应用程序选项卡
我想在粉丝页面上创建一个选项卡应用程序。一年前,使用facebook.php
v.2.0,我能够创建和管理一个应用程序,但现在情况发生了变化,我无法弄清楚如何连接到API来验证粉丝页面是否被喜欢。我用facebook.php
v 3.1.1,所以一年前,我会用:粉丝页面上的Facebook应用程序选项卡
<?php
require 'facebook.php';
$app_id = "YOUR APP ID HERE";
$app_secret = "YOUR SECRET KEY HERE";
$facebook = new Facebook(array(
'appId' => $app_id,
'secret' => $app_secret,
'cookie' => true
));
$signed_request = $facebook->getSignedRequest();
$like_status = $signed_request["page"]["liked"];
?>
我应该怎么办呢?
你并不需要使用getSignedRequest
,这样的事情应该工作:
$signed_request = $_REQUEST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["page"]["liked"])) {
//User is not a fan
} else {
//User is a fan
}
它每次都不粉丝..我想当我创建该应用程序有什么错误..看:http://www.facebook.com/PentruRomani?sk=app_215673801864574当你访问它时,不需要权限 – Sebastian 2012-02-26 00:16:45
'print_r($ signed_request)'显示什么? – 2012-02-26 02:16:02
另外,请确保你的应用程序配置中你的标签网址的末尾有一个'/',它似乎有问题有时 – 2012-02-26 02:18:21
只是这样做:
<?php
$secret = ''; // Input the application secret
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') {
echo 'Unknown algorithm. Expected HMAC-SHA256';
return null;
}
// Check signature
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
echo 'Bad Signed JSON signature!';
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
$data = parse_signed_request($_REQUEST['signed_request'], $secret);
print_r($data);
exit();
?>
其实,你可以使用'$ _ POST [ 'signed_request'] ' - 阅读此http://developers.facebook.com/docs/authentication/signed_request/ – scibuff 2012-02-25 23:59:42
不工作..我想我想念的东西..因为和$用户= $ facebook-> getUser();是0(零)和echo var_export($ _ POST ['signed_request'],true);是NULL ... – Sebastian 2012-02-26 00:06:34
只有当用户已经给予应用程序(至少基本)权限时,应用程序才有权访问用户标识和用户详细信息,只需执行'print_r(parse_signed_request($ _REQEST ['signed_request'],$ secret)) ;'看看你得到的是什么数据。页面 - >喜欢是肯定存在,即使用户没有给予应用权限 – scibuff 2012-02-26 00:10:42