2011-06-26 90 views
3

我有一個Facebook粉絲頁面,我想檢查訪問該頁面的用戶是否喜歡該頁面以顯示內容。它的工作原理,當我登錄的管理員,但是當另一個帳戶訪問該頁面的facebook->getUser()總是返回0facebook-> getUser返回0

require 'src/facebook.php'; 

$facebook = new Facebook(array(
    'appId' => 'ID', 
    'secret' => 'HASH', 
    'cookie' => true, 
)); 

$user = $facebook->getUser(); 

//Page id 

$page = '215010578537112'; 


$likeID = $facebook->api(array('method' => 'fql.query', 'query' => 
'SELECT uid FROM page_fan WHERE uid =' . $user . 'AND page_id =' .$page)); 

if ($likeID) { 

}else{ 

} 
+0

在[Facebook的開發者博客(https://developers.facebook.com/提供的示例blog/post/503 /)表明'新的Facebook()'行不包含關於cookie的行,這可能是問題嗎? – 2011-06-26 14:43:28

+0

那不行的 –

+0

哎,那應用程序的祕密應該是***祕密嗎?也許這是不是一個好主意,公開發布在論壇上?... – 2011-06-26 15:15:37

回答

0

由於這是一個粉絲頁面,你不需要調用一個FQL查詢,由於FQL查詢要求用戶首先授權您的應用程序。 Facebook將發送signed_request發佈參數到您的iframe粉絲頁面。有關如何解碼signed_request參數的信息,請參閱this answer,並檢查它們是否是頁面的粉絲。

1

試試這個版本中,你不需要什麼特別的檢查,如果他們喜歡你的頁面:

// find out if the user likes the page or not 
$signed_request = $_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

// content to show if they don't like the page 
if (empty($data["page"]["liked"])) { 
?> 
<p>Not a fan</p> 

<?php 
// content to show if they do like the page 
} else { 
<div>Is a fan</div>