您可以通过以下方式获取经过身份验证的用户的朋友列表:
https://graph.facebook.com/me/friends
任何人都知道如何按用户名订购列表?因为它不是默认的。文档中没有任何内容。
答案 0 :(得分:12)
我们只是通过javascript排序在多个应用中执行此操作。
function sortByName(a, b) {
var x = a.name.toLowerCase();
var y = b.name.toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
var _friend_data = null
function lazy_load_friend_data(uid) {
if (_friend_data == null) {
FB.api('/me/friends', function(response) {
_friend_data = response.data.sort(sortByName);
}
)
}
}
答案 1 :(得分:5)
找出解决方案。最终,我们可能能够订购图表结果。现在,我只是这样做(javascript)。假设我的PHP会话中有“fb_uid”:
var friends = FB.Data.query("SELECT name, uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1={0}) ORDER BY name", parseInt(fb_uid));
friends.wait(function(rows){
console.log(rows);
});
答案 2 :(得分:3)
我认为整个OpenGraph API仍处于FB Connect的过渡阶段。在任何情况下,我都会在FQL中执行一个旧的order-by查询,您仍然可以使用它。我无法想象,一旦开放的图形方式得到确定,就很难改变。
这个非常好的教程向您展示了如何做到这一点:
http://thinkdiff.net/facebook/php-sdk-graph-api-base-facebook-connect-tutorial/
$fql = "select name, hometown_location, sex, pic_square from user where uid=xxxxxxxxxxxxxxx";
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$fqlResult = $facebook->api($param);
答案 3 :(得分:2)
如果你在来电方面这样做会有什么问题。这意味着,在您从该图API获取所有朋友之后,您可以将所有这些放入已排序的数据结构中,然后显示所有这些:)
答案 4 :(得分:2)
在一次通话中使用FQL。
SELECT uid, name FROM user WHERE uid IN
(SELECT uid2 FROM friend WHERE uid1 = me())
ORDER BY name ASC
答案 5 :(得分:1)
$friends = $facebook->api('me/friends');
foreach ($friends as $key=>$value) {
sort($value);
foreach ($value as $fkey=>$fvalue) {
echo "<img src='https://graph.facebook.com/".$fvalue[id]."/picture' width='50' height='50' title='".$fvalue[name]."' />";
}
}
答案 6 :(得分:1)
对我来说简单的asort($ friends);工作得很好;)
答案 7 :(得分:0)
private function _compareFacebookFriends($a, $b)
{
return strcasecmp($a['name'], $b['name']);
}
public function sortFacebookFriendsArray(&$array)
{
usort($array, '_compareFacebookFriends');
}
/* Add here $facebook's initialization. Use Facebook PHP SDK */
$fbFriends = $facebook->api('/me/friends');
sortFacebookFriendsArray($fbFriends);
答案 8 :(得分:0)
建立@ MainSocial的答案,但按最后一个名字排序,而不是仅用名字排序:
function sortByName(a, b) {
var fn = function(x) { return x.name.toLowerCase(); };
var ln = function(x) { return x.last_name.toLowerCase(); };
if(ln(a) == ln(b)){
if(fn(a) == fn(b)) {
return 0;
}
return (fn(a) < fn(b)) ? -1 : 1;
}
return (ln(a) < ln(b)) ? -1 : 1;
}
function getFriendsList() {
FB.api('/me/friends', {fields: 'name,id,last_name'}, function(response) {
var friends = response.data.sort(sortByName);
for (i=0; i<friends.length; i++) {
$('body').append(friends[i].name + ' - ' + friends[i].id + '<br>');
}
});
}
getFriendsList()