【问题标题】:FB PHP SDK know if user liked my tab pageFB PHP SDK 知道用户是否喜欢我的标签页
【发布时间】:2013-07-18 15:40:48
【问题描述】:

我正在尝试确定用户是否喜欢我的粉丝页面(我已在其中安装了一个 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] => ----
)

我错过了什么? 谢谢

【问题讨论】:

    标签: php facebook sdk


    【解决方案1】:

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

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

    文档:Signed Requestsbase64_decode()json_decode()

    【讨论】:

    • 谢谢...效果很好,但是在 PHP SDK 中,我使用的 getSignedRequest() 函数确实可以做到...奇怪的是,当我运行相同的原始脚本时一开始,我得到了我需要的所有数据(这也完全等于我从你的脚本中得到的数据);....知道为什么上次我测试这段代码时,我没有得到所有的数据,但是现在我做到了(保持相同的代码)
    • 有时会发生。 :)
    • 哦,好吧……所以这只是随机的? :p 没有解决方法或其他什么?
    • @Monk:这实际上不是错字:)
    • @Monk:是的。它将函数调用parsePageSignedRequest() 的返回值分配给变量$signed_requestif 块中的语句仅在 parsePageSignedRequest() 返回 true 时才被评估。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多