前往https://github.com/facebook/facebook-php-sdk/zipball/master确保您拥有最新的 SDK
解压缩,你有一个如下所示的布局
/facebook-php-sdk
index.php
其中 index.php 与正在使用的文件一起显示在浏览器中的好友数量
在 PHP 文件的开头包含 SDK
require('sdk/src/facebook.php');
转到https://developers.facebook.com/apps,选择您的应用并获取您的 App ID 和 App Secret,在 PHP 文件中创建一个实例
$facebook = new Facebook(array(
'appId' => 'YOUR_APP_ID_HERE',
'secret' => 'YOUR_SECRET_HERE',
));
然后检索$user
数据,这样我们就知道当前用户是经过身份验证的
$user = $facebook->getUser();
在发送任何呼叫之前检查身份验证是否正确
if ($user) {
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
现在可以在https://developers.facebook.com/docs/reference/api/user/#statuses上调用/me/statuses
文档
$statuses = $facebook->api('/me/statuses');
这应该返回在http://developers.facebook.com/docs/reference/api/status/中定义的所有当前用户状态消息的结构状态消息数组。
现在你需要决定什么决定了顶级朋友
让我们选择选项1,并给每个权重1。即一个like和一个comment在确定朋友数量时是等价的
所以创建一个变量来保存它,例如 $friendArray
然后对所有状态消息进行迭代,但整个 JSON 响应以包装的开头data
{
"data": [
所以访问$statuses['data']
,foreach 会将所有状态消息作为一个status
项目提供
foreach($statuses['data'] as $status){
在此循环中迭代所有喜欢并增加出现的每个 id 的值
foreach($status['likes']['data'] as $likesData){
$frid = $likesData['id'];
$friendArray[$frid] = $friendArray[$frid] + 1;
}
在此循环中迭代所有评论并增加出现的每个 id 的值
foreach($status['comments']['data'] as $comArray){
$frid = $comArray['from']['id'];
$friendArray[$frid] = $friendArray[$frid] + 1;
}
在外循环结束时,您应该有一个包含分数foreach($statuses['data'] as $status){
的数组。$friendArray
调用asort
http://www.php.net/manual/en/function.asort.php对数组进行排序,然后您可以循环获取前 x 分数。
您显示的代码不是函数,实际上缺少右括号,它实际上没有返回任何内容,因为它不是函数。
注意事项:/me/statuses
每次调用只返回一组有限的状态消息,您需要获取previous
页面调用以迭代所有消息。返回的顶级朋友只是基于我上面提出的限制。