Получение предыдущих статусов от $ facebook-> api ('/ me / feed') - PullRequest
0 голосов
/ 02 сентября 2011

Я пытался получить доступ к предыдущим статусам, опубликованным текущим пользователем (тем, который входит в систему).Это кажется ненадежным, и число возвращенных статусов, кажется, изменяется.

Я понимаю, что вы можете использовать? Limit =,? Поскольку = и? До =, однако, когда я использую? Limit = 1000, то есть достаточно большой, чтобы получить некоторые из предыдущих сообщений, сделанных пользователем, это становится непредсказуемым.

Я хочу получить доступ к первым статусам, которые я опубликовал с тех пор, как присоединился к Facebook.Каков наилучший способ сделать это? (Использование «? Limit = 1000» кажется немного чрезмерным!)

Это устанавливает разрешения и т. Д., А затем захватывает фид:

require 'php-sdk/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'xxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxx', 
  'cookie' => true
));

$user = $facebook->getUser();

// Permissions required
$par = array();
$par['scope'] = "status_update user_about_me user_status";

$feed = null;
$profile = null;
$loginUrl = null;

if ($user) {
    $logoutUrl = $facebook->getLogoutUrl();
    try {
        // Proceed knowing you have a user who is logged in and authenticated

        // Get Feed
        $feed = $facebook->api('/me/feed');
        // Get User Profile
        $profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }   
} 
else {
    $loginUrl = $facebook->getLoginUrl($par);
}

?>

Эточто я использую для отображения обновлений статусов из ленты:

<code>foreach ($feed['data'] as $entry)
{
    // If its a message posted by user
    $isStatusUpdate = array_key_exists('message', $entry) and $entry['from']['name'] == $profile['name'];

    if ($isStatusUpdate)
    {
        $likes = 0;
        $comment = 0;

        // Get num of likes 
        if (array_key_exists('likes', $entry))
            $likes = count($entry['likes']); 

        // Get num of comments
        if (array_key_exists('comments', $entry))
            $comments = count($entry['comments']);

        // Display message with num of likes and comments
        echo '<div class="row"><div class="span4 columns"><h2>Post '.$counter.'</h2>';
        echo '<p>Likes '.$likes.'</br>';
        echo 'Comments '.$comments.'</p></div>';
        echo '<div class="span12 columns"><h3>'.substr($entry['created_time'], 0, 10).'</h3>';
        echo '<pre class="prettyprint">'.$entry['message'].'
';}}

1 Ответ

2 голосов
/ 02 сентября 2011

Вы не можете сделать предел = 1000, и я не удивлен, что вы получаете неожиданные результаты. Существует верхний предел для того, сколько вы можете запросить за один раз, даже если бы его не было, вы, скорее всего, получите тайм-аут и получите только частичные данные.

Однако вы можете отправить запрос, использующий поле «с», которое уже давно в прошлом, так что, безусловно, до того, как пользователь стал участником Facebook. Например, если бы вы использовали дату начиная с 01.01.2000, вы получите список постов от первого, отправленного пользователем.

Надеюсь, что поможет

...