1

这是我在 SO 上的第一篇文章。

我正在使用 PHP 来获取 Facebook 好友状态。特别是,我试图从我的一个 facebook 朋友那里检索所有公开状态,但它只发生在前 100 个状态。我需要获取所有状态并将它们写入文本文件。这是我正在使用的代码,从我在 SO 上阅读的许多答案中修补。

$i=0;
$result = $facebook->api('/my_friend_ID/statuses/',
array('access_token' => $facebook->access_token,'limit'=>100,)); 

//'offset'=>50,在限制之前使用,它将限制向前推 50,它不会超过它 //'since'=>2010,我读到了,所以甚至有这个字段,但我可以不要让它工作。

foreach($result['data'] as $post)
{
    echo $i . '<br>';
    echo $post['id'] . '<br>';
    echo $post['from']['name'] . '<br>';
    echo $post['from']['id'] . '<br>';
    echo $post['name'] . '<br>';
    echo $post['message'] . '<br>';
    echo '*---------------------------------------------------*' . '<br>';
    $i++;
    $write_file = fopen("esempio.txt","a");
    $message = $post['message'] . '<br>';
    fwrite($write_file,$message);
    fclose($write_file);

} 

所以,更清楚一点,如何在一个文本文件中获取所有朋友的状态(旧的和新的)?

4

1 回答 1

0

您需要使用分页https://developers.facebook.com/docs/reference/api/pagination/

$the_statuses = array();

$your_statuses = $facebook->api("/my_friend_ID/statuses/");

while ($your_statuses['data'])
{
    $the_statuses = array_merge( $the_statuses, $your_statuses['data'] );

    $paging = $your_statuses['paging'];
    $next = $paging['next'];

    $query = parse_url($next, PHP_URL_QUERY);
    parse_str($query, $par);

    $your_statuses = $facebook->api(
            "/my_friend_ID/statuses/", 'GET', array(
            'limit' => $par['limit'],
            'until'  => $par['until'] ));
}

然后你可以循环所有状态

foreach($the_statuses['data'] as $post)
{
    echo $i . '<br>';
    echo $post['id'] . '<br>';
    echo $post['from']['name'] . '<br>';
    echo $post['from']['id'] . '<br>';
    echo $post['name'] . '<br>';
    echo $post['message'] . '<br>';
    echo '*---------------------------------------------------*' . '<br>';
    $i++;
    $write_file = fopen("esempio.txt","a");
    $message = $post['message'] . '<br>';
    fwrite($write_file,$message);
    fclose($write_file);

} 
于 2013-05-04T17:48:18.533 回答