我一直在尝试访问当前用户(登录的用户)发布的先前状态。这似乎是不可靠的,返回的状态数似乎有所不同。
我知道你可以使用?limit =,?since =和?until =,但是当我使用?limit = 1000时,说大到足以获得用户提前发布的一些帖子就变得无法预测了。
我想要做的是访问自我加入Facebook以来我发布的前几个状态。最好的方法是什么?(使用'?limit = 1000'似乎有点过分!)
这会设置权限等,然后抓取Feed:
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);
}
?>
这是我用来显示Feed中的状态更新的内容:
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'].'</pre></div>';
}
}
答案 0 :(得分:2)
你不能做限制= 1000,我并不惊讶你得到了意想不到的结果。您可以一次请求的数量有一个上限,即使没有,您可能会超时并且只接收部分数据。
然而,你可以做的是发送一个请求,该请求使用过去很久以前的'since'字段,这肯定是在用户成为facebook成员之前。例如,如果您使用自2000年1月1日起的日期,您将获得用户提出的第一个帖子列表。
希望有所帮助