2013-02-17 55 views
13

我想抓住臉譜組中的所有帖子並參考其ID。我試過這個:如何通過臉譜api獲取一個羣組的所有帖子

https://graph.facebook.com/".$group_id."/feed?time_format=U&".$authToken 

它只給我某些職位。如果可能的話,我希望所有帖子都可以通過單個網址進行檢索,如果不是,請使用分頁url。但分頁url包含分頁令牌爲

https://graph.facebook.com/55259308085/feed?limit=500&access_token=ACCESS_TOKEN&until=1298025645&__paging_token=55259308085_10150259582898086 

什麼是分頁令牌和直到?

請指引我走向正確的道路。 謝謝。

回答

15
set_time_limit(99999999); 
ini_set('memory_limit', "9999M"); 

function fetchUrl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 40); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 

$url_array = array(); 

function recurse_it($url, $c) { 
    global $url_array; 
    $feeds   = fetchUrl($url); 
    $feed_data_obj = json_decode($feeds, true); 
    if (!empty($feed_data_obj['data'])) { 
     $next_url  = $feed_data_obj['paging']['next']; 
     $url_array[$c] = $next_url; 
     recurse_it($next_url, $c + 1); 
    } 
    return $url_array; 
} 

$url = "https://graph.facebook.com/55259308085/groups?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
$arr = recurse_it($url, 0); 
print_r($arr); 

哪裏$arr是所有我使用一個foreach遍歷分頁的所有內容的可用分頁鏈接的數組。
我可以提供更多的解釋,以防萬一需要。

+0

您是否需要使用OAuth獲取訪問令牌/ – weaveoftheride 2013-08-29 09:27:56

+2

任何機會在Python中發佈上述代碼?那太好了! – avi 2014-06-16 14:02:40

9

試試這個在PHP:

$response = file_get_contents("https://graph.facebook.com/$group_id/feed?limit=1000&access_token=$access_token"); 

它會給你一個頁面,其中1000個職位的限制。轉換的JSON響應PHP關聯數組:

$array = json_decode($response, true); 
// Do your own stuff with $array ... 

通過獲取下一個頁面:

$response = file_get_contents($array['paging']['next']); 

試試這個在一個循環,直到$array['data']出來,在響應爲空。


直到 - 這是用來指定的時間點,直到其職位是要獲取(僅後所顯示的帖子)一個UNIX時間整數。

+0

另一個簡單的解決方案嗨nitesh THX ......不過香港專業教育學院想出了另一種方式.. – 2013-02-21 04:00:04

+0

@Nilesh:我想你想輸入**'json_decode' **,而不是'json_encode'。 :) – Sk8erPeter 2013-10-03 20:16:38

+0

@ Sk8erPeter:我的不好。感謝您的編輯。 :) – Nilesh 2013-10-08 04:39:35

1
$url_array=array(); 
    $url="https://graph.facebook.com/v2.2/".$fbpageid."/feed?access_token=".$access_token."&limit=250&fields=full_picture,picture,id,message,name,caption,description,updated_time,link,icon,from,privacy,type,status_type,application,object_id,story,story_tags,actions"; 

    function recurse_it($url,$c) 
    { 
     $feeds=file_get_contents($url); 
     $feed_data_obj=json_decode($feeds,true); 
     while(!empty($feed_data_obj['data'])) 
     { 
      $next_url  = $feed_data_obj['paging']['next']; 
      $url_array[$c] = $next_url; 
      $feeds=file_get_contents($next_url); 
      $feed_data_obj=json_decode($feeds,true); 
      $c=$c+1; 
     } 
     return $url_array; 
    } 
    $final_result=recurse_it($url,0); 
相關問題