我试图找出用户是否喜欢我的粉丝页面(我已经在内部安装了一个FB应用程序)页面,
我在网上搜索过,发现这个代码应该有效:
$signed_request = $facebook->getSignedRequest();
echo "<pre>";
print_r($signed_request);
echo "</pre>";
$liked = $signed_request["page"]["liked"];
这是我得到的数据,但我不知道用户是否喜欢这个页面:
阵列
(
[algorithm] => HMAC-SHA256
[code] => AQA7PQo8FBLaHlEe3IgYMBg_4Smwt_qsgWpiUnnG2XIco0ndK3zcCMgK4M7975cr1oUmL2iYv5UhBKM-hAxOmUUwbhuj2ZHfMiLNeO8ZBc4c5jexI-VZuDGFwnnW4-eg433gVbDo_uLQ8MBpjI2kT8c6B_VvNLoY4_Oel5odc6tObW54a0Thdd7a_Bhq-kHOHz-CJxgBOWLDGR9plUhgZGs9o34jHfOZLFRGOQvSxd1PcFkuMorKy2lP9AHnBdZ2BI8wsy_U_TGbPPt2uGdS5nkpvJbfvh5JPT8zULAm_nWBtZ4YfZcngSj64KZDvr8Fwr0
[issued_at] => 1374161190
[user_id] => ----
)
我错过了什么?
感谢
答案 0 :(得分:2)
捕获已签名的请求后,您需要执行三个步骤:
将签名的请求拆分为由.
字符描述的两个部分(例如238fsdfsd.oijdoifjsidf899
)。
解码第一部分 - 编码签名 - 来自base64url。
从base64url解码第二部分 - “有效负载” - 然后解码生成的JSON对象。
这是一个完成所有这一切的功能:
$signed_request = $_REQUEST['signed_request'];
function parsePageSignedRequest() {
if (isset($_REQUEST['signed_request'])) {
$sig = null;
$payload = null;
list($sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
$sig = base64_decode(strtr($sig, '-_', '+/'));
$data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
return $data;
}
return false;
}
用法:
if($signed_request = parsePageSignedRequest()) {
if($signed_request->page->liked) {
echo "User liked the page";
}
else {
echo "User haven't liked your page (yet)";
}
}
答案 1 :(得分:0)
Facebook于2014年11月5日删除了Page Tab应用的signed_request对象的喜欢页面属性。这是一个令人遗憾的消息。