2012-06-04 56 views
0

我想要做的是用戶必須喜歡我的頁第一則只能去我facebook apps,但我不知道爲什麼我無法檢測它,我已經var_dump我的網頁很喜歡,結果是NULL爲什麼我不能像我的網頁獲得Facebook?

這裏是我的代碼

$request = $_REQUEST["signed_request"]; 
list($encoded_sig, $load) = explode('.', $request, 2); 
$fbData = json_decode(base64_decode(strtr($load, '-_', '+/')), true); 

var_dump($fbData["page"]["liked"]);// output is NULL 

if (!empty($fbData["page"]["liked"])) 
{ 
    echo "This content is for Fans only!"; 
} else { 
    echo "Please click on the Like button to view this tab!"; 
} 

任何想法如何做到這一點?

+0

確保你沒有發出任何重定向,否則'signed_request'將會丟失。更多[這裏](http://facebook.stackoverflow.com/questions/5329818/seamless-way-to-check-if-user-likes-page/5331541#5331541)。也'var_dump($ request);'看看你會得到什麼。 – ifaour

回答

0

您需要的權限user_likes檢查,如果他們喜歡你的Facebook應用但$ fbData [「頁」] [「喜歡」]指的是你的的Facebook應用頁面這是單獨的。

修改應用程式頁轉到應用設置>高級>接近底部,你會看到應用頁面

要使用許可user_likes查見該SO Answer On Detecting if a User Likes a Facebook App

+0

不,你不從sign_request獲取信息。 – CBroe

+0

感謝您的回覆,我新開發的Facebook開發者,能否爲我提供更多詳細信息?謝謝 – Oscar

0

你有沒有做肯定有作爲signed_request參數是

一旦頁面最初加載到Facebook iframe中,它就會被傳輸到您的應用程序 - 一旦您開始在應用程序內部導航,它就不會再存在了。

IMHO的最佳做法是解析signed_request(如果不爲空),並將結果安全地保存到您自己的會話中。

順便說一句,解析它本身是相當耗時的 - 我建議使用PHP SDK並使用Facebook :: getSignedRequest() - 如果存在signd_request參數,則該方法會以解碼形式提供所有數據。

所以這裏就是我通常做的:

if($signed_request_data = $Facebook->getSignedRequest()) { 
    $_SESSION['signed_request_data'] = $signed_request_data; 
} 

您可以撥打每一頁上的代碼 - 只有在方法實際上返回的數據,你會得到更新。

+0

嗨CBroe,感謝您的回覆,我新的Facebook開發者,你能否提供更多的詳細信息,如一些鏈接或代碼?謝謝 – Oscar

+0

請閱讀文檔! https://developers.facebook.com/docs/reference/php/facebook-getSignedRequest/開始;也可以在整個開發人員區域瞭解基本概念。 – CBroe

相關問題