如何获取用户的前10位朋友的uid ,并用指定的字符串换行每个uid?
来自:Get list of top friends for facebook app,我看到了:
$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'];
}
但这又回归了什么?它是否返回数组中朋友的用户ID?我想在数组中得到它,搜索的结果,所以我可以使用foreach包装每个ID,并用它做我喜欢的事。
如果以上代码足够,我应该为顶级朋友的数组调用$frid
吗?我只需要理解。的:○)
感谢您的时间。
假设授予权限。
(这只有在用户允许的情况下才会发生,所以假设我们已经拥有了该权限。)
答案 0 :(得分:5)
转到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;
}
}
现在打电话给/me/statuses
https://developers.facebook.com/docs/reference/api/user/#statuses
$statuses = $facebook->api('/me/statuses');
这应该返回在所有当前用户状态消息的http://developers.facebook.com/docs/reference/api/status/定义的结构状态消息的数组。
现在你需要决定什么决定顶级朋友
让我们选择选项1,并给出每个权重1.这是一个类似的,评论在确定朋友数量的等价值
所以创建一个变量来保存它,例如$ 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
次调用才能迭代所有消息。返回的热门朋友只是基于我上面制定的限制。