FB PHP SDK知道用户是否喜欢我的标签页

时间:2013-07-18 15:40:48

标签: php facebook sdk

我试图找出用户是否喜欢我的粉丝页面(我已经在内部安装了一个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] => ----
)
我错过了什么? 感谢

2 个答案:

答案 0 :(得分:2)

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

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

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

  3. 从base64url解码第二部分 - “有效负载” - 然后解码生成的JSON对象。

  4. 这是一个完成所有这一切的功能:

    $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)";
        }  
    }  
    

    文档:Signed Requestsbase64_decode()json_decode()

答案 1 :(得分:0)

Facebook于2014年11月5日删除了Page Tab应用的signed_request对象的喜欢页面属性。这是一个令人遗憾的消息。