3

我试图找出用户是否喜欢我的粉丝页面(我已经在里面安装了一个 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] => ----
)

我错过了什么?谢谢

4

2 回答 2

2

捕获签名请求后,您需要执行三个步骤:

  1. 将已签名的请求拆分为由.字符(例如238fsdfsd.oijdoifjsidf899)描述的两部分。

  2. 从 base64url 解码第一部分 - 编码签名。

  3. 从 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)";
    }  
}  

文档:签名请求,,,base64_decode()json_decode()

于 2013-07-18T15:45:41.550 回答
0

Facebook 已于 2014 年 11 月 5 日删除了 Page Tab 应用程序的 signed_request 对象的点赞页面属性。这是个不幸的消息。

于 2015-01-24T09:19:23.250 回答