Как получить все сообщения группы через facebook graph api
Я хочу захватить все сообщения из группы facebook со ссылкой на его ID. Я пробовал это:
https://graph.facebook.com/".$group_id."/feed?time_format=U&".$authToken
который дает мне определенные сообщения. Я хочу, чтобы все сообщения были получены одним URL-адресом, если это возможно, если не по URL-адресу страницы. Но URL-адрес для разбивки на страницы содержит токен подкачки как
https://graph.facebook.com/55259308085/feed?limit=500&access_token=ACCESS_TOKEN&until=1298025645&__paging_token=55259308085_10150259582898086
Что такое токен поискового вызова и до <
Пожалуйста, направьте меня на правильный путь.
Спасибо.
Ответы
Ответ 1
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 для прокрутки всего содержимого разбивки на страницы.
Я могу предоставить больше объяснений в случае необходимости.
Ответ 2
Попробуйте это в 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']
не станет пустым в ответе.
Until - это целое число UNIX, используемое для указания момента времени, до которого должны быть получены сообщения (после этого появятся только сообщения, сделанные после этого).
Ответ 3
$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);