在Facebook上获取前10位用户的朋友(获取他们的UID)PHP,Facebook API

Maf*_*fia 1 php facebook facebook-graph-api facebook-php-sdk

如何获取用户的前10位朋友的uid,并使用指定的字符串包装每个uid?

来自:获取Facebook应用程序的热门朋友列表,我看到:

$statuses = $facebook->api('/me/statuses');

foreach($statuses['data'] as $status){
// processing likes array for calculating fanbase. 

        foreach($status['likes']['data'] as $likesData){
            $frid = $likesData['id']; 
            $frname = $likesData['name']; 
            $friendArray[$frid] = $frname;
        }

 foreach($status['comments']['data'] as $comArray){
 // processing comments array for calculating fanbase
            $frid = $comArray['from']['id'];
            $frname = $comArray['from']['name'];

}
Run Code Online (Sandbox Code Playgroud)

但这又回归了什么?它是否返回数组中朋友的用户ID?我想在数组中得到它,搜索的结果,所以我可以使用foreach包装每个ID,并用它来做我喜欢的事情.

如果上面的代码足够了,我应该呼吁$frid顶级朋友阵列吗?我只需要理解.:O)

感谢您的时间.


假设授予了权限.
(这只有在用户允许的情况下才会发生,所以假设我们已经拥有了该权限.)

phw*_*hwd 5

通过访问https://github.com/facebook/facebook-php-sdk/zipball/master确保您拥有最新的SDK

解压缩,你有一个如下所示的布局

/facebook-php-sdk
index.php
Run Code Online (Sandbox Code Playgroud)

其中index.php与用于在浏览器中显示的文件的朋友数量有关

在PHP文件的开头包含SDK

require('sdk/src/facebook.php');
Run Code Online (Sandbox Code Playgroud)

转到https://developers.facebook.com/apps,选择您的应用并获取您的App ID和App Secret,在PHP文件中创建一个实例

$facebook = new Facebook(array(
  'appId'  => 'YOUR_APP_ID_HERE',
  'secret' => 'YOUR_SECRET_HERE',
));
Run Code Online (Sandbox Code Playgroud)

然后检索$user数据,以便我们知道当前用户已通过身份验证

$user = $facebook->getUser();
Run Code Online (Sandbox Code Playgroud)

在发送任何呼叫之前,请检查身份验证是否正确

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在可以/me/statuses访问https://developers.facebook.com/docs/reference/api/user/#statuses查看文档.

$statuses = $facebook->api('/me/statuses');
Run Code Online (Sandbox Code Playgroud)

这应该返回在http://developers.facebook.com/docs/reference/api/status/中定义的所有当前用户状态消息的结构状态消息的数组.

现在你需要决定什么决定顶级朋友

  • 喜欢+评论的数量
  • 评论数量
  • 喜欢的人数

让我们选择选项1,并给出每个权重1.这是一个类似的,评论的价值等同于确定朋友的数量

因此,创建一个变量来保存它,例如$ friendArray

然后对所有状态消息进行迭代,但整个JSON响应以包装开始 data

{
  "data": [
Run Code Online (Sandbox Code Playgroud)

所以访问$statuses['data'],foreach将所有状态消息作为status项目

foreach($statuses['data'] as $status){
Run Code Online (Sandbox Code Playgroud)

在这个循环中迭代所有喜欢并递增出现的每个id的值

foreach($status['likes']['data'] as $likesData){
    $frid = $likesData['id']; 
    $friendArray[$frid] = $friendArray[$frid] + 1;
}
Run Code Online (Sandbox Code Playgroud)

在此循环中,迭代所有注释并增加显示的每个id的值

foreach($status['comments']['data'] as $comArray){
    $frid = $comArray['from']['id'];
    $friendArray[$frid] = $friendArray[$frid] + 1;
}
Run Code Online (Sandbox Code Playgroud)

在外部循环结束时,foreach($statuses['data'] as $status){您应该拥有一个$friendArray具有分数的数组.

调用asort http://www.php.net/manual/en/function.asort.php对数组进行排序,然后循环获取前x个分数.

你展示的代码不是一个函数,实际上缺少一个右括号,它实际上并没有返回任何东西,因为它不是一个函数.

警告:/me/statuses每次调用只返回一组有限的状态消息,您需要获取previous页面调用来迭代所有消息.返回的热门朋友仅基于我上面制定的限制.