2013-07-18 35 views
3

我試圖找出如果用戶喜歡我的粉絲專頁(我已經安裝了一個FB應用程序作爲內部標籤)的頁面,FB PHP SDK知道,如果用戶喜歡我的標籤

我在網上搜索和發現這個代碼是這樣運作的:

 $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

一旦你捕獲的簽名的請求,你需要執行三個步驟:

  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()

+0

謝謝...這工作完美,但在PHP SDK中,我使用的getSignedRequest()函數確實是這樣... 奇怪的是,當我運行原來的腳本時,得到了所有我需要的數據(這也恰好等於我從你的腳本得到的數據); .... 任何想法,爲什麼我測試此代碼最後一次,我沒有得到所有的數據,但現在我(保持相同的代碼) –

+0

它有時會發生。 :) –

+0

哦好吧...所以它只是隨機? :p沒有工作或什麼? –

0

Facebook已經刪除的喜歡頁面屬性頁面標籤應用o的signed_request對象ñ2014年11月5日。這是一個可悲的消息。

相關問題