2012-04-22 131 views
0

我曾經使用流動代碼來檢查用戶是否是我頁面的粉絲,但他在我的臉書頁面上。現在我想檢查用戶是否在我的網站上時是我的Facebook頁面的粉絲。檢查用戶是否是我的Facebook頁面的粉絲?

<?php 
      $signed_request = $_REQUEST["signed_request"]; 
      list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 

      if (empty($data["page"]["liked"])) { 
       echo "You are not a fan!"; 
      } else { 
       echo "Welcome back fan!"; 
      } 
    ?> 

我通過Facebook文檔閱讀,但我無法找到合適的答案。 幫助? 我不想處理Facebook的任何應用程序權限。我怎樣才能通過只有PHP來解決這個問題?

回答

4

如果訪問不在頁面選項卡中的應用程序,則不會獲得page詳細信息。

你可以做到這一點簡單的FQL查詢page_fan table(知道當然Facebook頁面的id):

SELECT uid, page_id FROM page_fan WHERE uid=me() AND page_id=PAGE_ID 

或者通過查詢圖形API爲likes connection of user object

https://graph.facebook.com/me/likes/PAGE_ID 

兩者的這些方式需要用戶授予的user_likes權限。

要獲取用戶朋友的相同詳細信息,請求friends_likes許可,並用朋友ID替換me/me()

更新:(只是爲了描述你在評論中問道)
有這樣的情況,要求user_likes可能是不必要的,由於流量的性質,如果你只需要知道用戶/需要像某些URL和/或Facebook頁面。

您可以通過subscribing (FB.subscribe)edge.create這樣的事件來實現,一旦用戶喜歡該頁面,就會觸發事件(對於不喜歡edge.remove的事件)。

請注意,只有在用戶不喜歡該內容的情況下才可靠,因爲edge.create僅在用戶操作時觸發。

+0

感謝您迴應這幫助了我很多。所以我明白,如果未經他/她的個人信息允許,我將無法檢查用戶是否是粉絲或不與我的臉書頁面(不是應用程序)。我曾在許多網站中強迫用戶喜歡特定頁面或多個頁面以查看其內容,當我喜歡這些頁面時,網站會刷新並查看其內容,而不會向我詢問我的Facebook信息權限。我會怎麼做這樣的事情? – user1348777 2012-04-22 07:18:10

+0

@ user1348777,我已更新了我的答案,提供了更多詳細信息。 – 2012-04-22 07:36:41

+0

這正是我想要的。用戶點擊一次,他可以儘可能多地查看網站。現在的代碼是什麼? – user1348777 2012-04-22 08:15:54

3

一個更好的解決問題的方法是:

// to generate user access token after the user is logged in 
$USER_ACCESS_TOKEN = $facebook->getExtendedAccessToken(); 

$isFan = curl("https://api.facebook.com/method/pages.isFan?format=json&access_token=" . $USER_ACCESS_TOKEN . "&page_id=" . $FACEBOOK_PAGE_ID); 

     function curl($url) { 

      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
      $data = curl_exec($ch); 
      curl_close($ch); 
      return $data; 
     } 
相關問題