2016-08-19 106 views
-1

我曾經能夠通過Facebook上的單個FQL查詢URL獲得頁面喜歡。但截至上週,他們關閉了它。要求使用他們的SDK或API,但是我的系統掃描我的用戶的臉書頁面並顯示他們的頁面喜好。獲取Facebook頁面在PHP中的喜歡(在FQL折舊後)

有什麼辦法可以解決這個問題,就像我使用SDK或API一樣。我需要每個頁面的每個請求的應用程序。

謝謝。

注: 我試圖用頭&用戶代理沒有喜悅file_get_contents() &嘗試手機的請求都無濟於事。

代碼:

$url = "http://m.facebook.com/pagename/"; 

$options = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7\r\n" 
) 
); 

$context = stream_context_create($options); 
$file = file_get_contents($url, false, $context); 

print_r($file); 

結果:

enter image description here

+1

每個室內用用戶,您將必須得到的access_token獲得通過Facebook的API用戶的Infor。形成api響應,你可以得到你想要的東西。 –

+0

_「但是我的系統掃描來自我的用戶的Facebook頁面」_ - - 未經Facebook的事先書面同意而刮掉他們的頁面違反了他們的ToS,所以你一直在做的事情是不允許的。使用他們的API是解決這個問題的正確方法。 – CBroe

回答

1

不知道爲什麼這個問題是downvoted。之前我們曾使用fql獲取/ share數量,並在8,2016年之後折舊。我們可以用這個技巧來得到相似的數字。

只需向facebook發送一個curl請求&解析結果。

$domain='stackoverflow.com'; 
    $protocol='http://'; 
    $orgin=$protocol.$domain.'/'; 
    $url='http://stackoverflow.com'; 

    $param=array('action'=>'like','app_id'=>'','channel'=>'http://staticxx.facebook.com/connect/xd_arbiter/r/lUqP5iIjiw6.js?version=42#cb=f178d9075b06a6a', 
    'domain'=>$domain,'orgin'=>$orgin,'relation'=>'parent.parent','container_width'=>0,'href'=>$url,'layout'=>'button_count','locale'=>'en_GB','sdk'=>'joey', 
    'share'=>false,'show_faces'=>true,'size'=>'large'); 

    $fb_url='https://www.facebook.com/v2.6/plugins/like.php?'; 

    $ch= curl_init(); 
    $options=array( 
    CURLOPT_URL => $fb_url.http_build_query($param), 
    CURLOPT_FRESH_CONNECT => 1, 
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_FORBID_REUSE =>1, 
    CURLOPT_USERAGENT => "Mozilla/4.0 (compatible; MSIE 5.01;Windows NT 5.0)", 
    CURLOPT_SSL_VERIFYHOST=> 0, 
    CURLOPT_SSL_VERIFYPEER=> 0, 
    CURLOPT_REFERER=>$orgin, 
    CURLOPT_CONNECTTIMEOUT=> 10, 
    CURLOPT_TIMEOUT=>40 
); 

    curl_setopt_array($ch,$options); 
    $fb_html=curl_exec($ch); 

    if(curl_errno($ch)>0){ #checks any curl error 
    $fbc=''; 
    }else{ 
    $fb_html=preg_replace('/\s+/', '',$fb_html); 
    preg_match('/<span[^>]*id="u_0_3">(.*?)<\/span>/sm',$fb_html,$count); 
    $fbc=$count[1]; 
    } 

    curl_close($ch); 
    echo "Like count:$fbc"; 

檢查這篇文章詳細解釋:get facebook like/share count after fql depreciation