如何获取用户的前 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'];
}
但这会得到什么回报呢?它是否返回数组中朋友的用户 ID?我想把它放在一个数组中,搜索结果,这样我就可以使用 foreach 包装每个 ID,并用它做我喜欢的事情。
如果上面的代码足够了,我应该为顶级朋友数组调用$frid
吗?我只需要理解。:o)
谢谢你的时间。
假定已授予权限。
(这仅在用户允许权限后发生,因此假设我们已经拥有该权限。
通过转到 https://github.com/facebook/facebook-php-sdk/zipball/master 确保您拥有最新的 SDK
解压缩,您有一个如下所示的布局
/facebook-php-sdk
index.php
其中索引.php文件用于在浏览器中显示朋友的数量
在 PHP 文件的开头包含 SDK
require('sdk/src/facebook.php');
转到 https://developers.facebook.com/apps,选择你的应用并获取你的应用 ID 和应用密钥,在 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
页面调用以迭代所有消息。返回的顶级朋友仅基于我上面制定的限制。