2011-07-26 86 views
9

是否可以通過Javascript或PHP從我的網站上檢查用戶是否已經喜歡我的Facebook粉絲頁?檢查用戶是否已經喜歡粉絲頁

編輯:我需要一個解決方案,使用戶不需要進行身份驗證/允許一些persmissions第一

回答

12

最簡單的方法是撥打Graph API獲得/me/likes連接(注意您必須要求user_likes權限)。然後仔細檢查,並將id與您的頁面ID進行比較。

假設你正在使用的官方Facebook PHP SDK,並先後成立了Facebook對象的實例(見前述頁用法部分),下面的代碼可以用來找出如果用戶是風扇Daft Punk的的:現在

$our_page_id = '22476490672'; // This should be string 
$user_is_fan = false; 
$likes = $facebook->api('/me/likes?fields=id'); 
foreach($likes['data'] as $page) { 
    if($page['id'] === $our_page_id) { 
     $user_is_fan = true; 
     break; 
    } 
} 

,你可以進一步與$user_is_fan的變量。

在JavaScript中,代碼會非常相似。根據官方JavaScript SDK的方法FB.api(同樣,假設你已經採取了認證):我們使用的異步請求和回調,這裏

FB.api('/me/likes?fields=id', function(response) { 
    var our_page_id = '22476490672'; 
    var user_is_fan = false; 
    var likes_count = response.data.length; 
    for(i = 0; i < likes_count; i++) { 
     if(response.data[i].id === our_page_id) { 
      user_is_fan = true; 
      break; 
     } 
    } 
}); 

注意,所以使用user_is_fan變量的代碼必須是內功能。

+0

做用戶需要允許某些權限,這可以工作? –

+2

是,用戶需要用'user_likes'權限登錄。 –

+0

你知道,如果有可能,以檢查是否用戶是沒有任何用戶允許的權限的粉絲? 所以我不知道編輯爲用戶顯示權限框(我需要使用這個,所以如果用戶不是我們的Facebook粉絲頁面的粉絲,我可以顯示一個文本,如「你需要粉絲」。 希望你/有人能幫助我找到一個聰明的解決方案:-) –

0
<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script> 
FB.init({ 
appId : 'YOUR_APP_ID_WITHIN_QUOTES', //Change this to your app id 
status : true, // check login status 
cookie : true, // enable cookies to allow the server to access the session 
xfbml : true // parse XFBML 
}); 
</script> 



$signed_request = $_REQUEST["signed_request"]; 

list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
$has_liked = $data["page"]["liked"]; 

現在檢查$ has_liked參數去看看,如果用戶喜歡烏爾頁面或不!

+0

這是在臉書上的應用程序還是直接從網站? –

+0

它是在一個不是Facebook的一部分的網站;) – walialu

+0

我得到這個錯誤:未定義的索引:signed_request 如果我打印出$ _REQUEST,signet_request不存在於數組列表中:-( –

13
<?php 
require '../src/facebook.php'; 

// Create our Application instance (replace this with your appId and secret). 
$facebook = new Facebook(array(
    'appId' => 'APP_ID', 
    'secret' => 'APP_SECRET', 
)); 

$user = $facebook->getUser(); 
$page_id = "123456789"; 
$page_name = $facebook->api("/".$page_id)['name']; 
$page_link = $facebook->api("/".$page_id)['link']; 



if ($user) { 
    try { 
    $likes = $facebook->api("/me/likes/".$page_id); 
    if(!empty($likes['data'])) 
     echo "I like!"; 
    else 
     echo "not a fan!"; 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'user_likes' 
)); 
} 

// rest of code here 
?> 
+1

這個答案好得多,因爲沒有for循環,並且如果用戶不接受'user_likes'權限,它會再次嘗試。 –

+0

我必須做一個$ likes = $ response-> getDecodedBody();第一個 –

0

看起來像「/ me/likes/[page_id]」並不總是返回記錄,即使有一個。 最近我通過「/ me/likes/[page_id]」請求「,它將返回0, ,但是如果我請求沒有page_id,但是通過」/ me/likes /「獲取一堆記錄,您將看到page_id實際上是存在的,不能解釋爲什麼。

當與graph.facebook.com/[page_id]一起檢查時,唯一可疑的是它的「can_post」是false,而其他的「/ me/likes/[page_id]」確實有效。

但在這種情況下循環不好,尤其是一些瘋狂的人有數百萬喜歡。 是否有任何與page_id所有者帳戶相關的隱私設置會導致問題?

1

如果你是用戶給予的權限,對於基於PHP的網站,可以這樣很容易做到OK:

1 - 創建一個新的Facebook應用程序here

2 - 從here下載Facebook PHP SDK。提取文件並將其放置在與您將粘貼下面給出的代碼的文件所在的文件夾中!

3 - 使用此tool獲取您的Facebook頁面ID。

4 - 從here中爲您的頁面生成Facebook類似框的代碼。

後1,2,3和4個步驟完成後,可以檢查用戶是否已經喜歡上了一個頁面或不與下面的代碼:

<?php 
    require('facebook.php'); 
    $config = array(
     'appId' => 'your facebook app id', 
     'secret' => 'your facebook app secret code', 

     'allowSignedRequest' => false 
    ); 
    $facebook = new Facebook($config); 
    $user_id = $facebook->getUser(); 
    if (isset($user_id)) { 
     try {   
      $likes = $facebook->api('/me/likes/your_facebook_page_id_here', 'GET');    

      if (!empty($likes['data'])) // if user has liked the page then $likes['data'] wont be empty otherwise it will be empty 
      { 
       echo 'Thank you for liking our fan page!';     

      } 
      else { 
       echo 'You have not liked our fan page! Like it now:'; 
       ?>     
       <iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fchillopedia&amp;width&amp;height=290&amp;colorscheme=light&amp;show_faces=true&amp;header=true&amp;stream=false&amp;show_border=true&amp;appId=1392604484339363" scrolling="no" frameborder="0" style="border:none; overflow:hidden; height:290px;" allowTransparency="true"></iframe> //replace this with your own Facebook like box code 
       <?php 
      } 
     } catch (FacebookApiException $e) { 
      $login_url = $facebook->getLoginUrl(); 
      echo '<a href="' . $login_url . '">Please click here to login into your Facebook account.</a>'; 
      error_log($e->getType()); 
      error_log($e->getMessage()); 
     } 
    } else { 
     $login_url = $facebook->getLoginUrl(); 
     echo '<a href="' . $login_url . '">Please lick here to login into your Facebook account</a>'; 
    } 
    ?> 

用戶將點擊「請點擊這裏登錄你的Facebook帳戶。「文本會將其重定向到Facebook應用程序權限頁面,一旦用戶允許您的應用程序的權限,該代碼將獲取用戶的數據,並在用戶不喜歡您的粉絲頁面時顯示likebox。

+0

不再有效。 – Cyborg

相關問題