2012-05-14 27 views

回答

2

这是比较容易的:

  1. 获取的使用https://graph.facebook.com/me/friends通话(你可以使用Graph API Explorer为)

  2. 对于每一个朋友,让他的ID,并将请求发送到以下好友列表图形API:https://graph.facebook.com/FRIEND_ID?access_token=APP_ID|APP_SECRET&栏=安装

注:栏=安装是必需的,因为每documentation

如果你回来像

{ "installed": true, "id": "FRIEND_ID" }

这意味着,朋友有应用程序安装。如果这只是ID回来 - 然后他没有安装应用程序。

APP_ID和APP_SECRET可以在您的应用程序页面找到。

希望有所帮助。

+0

非常低效的方式来做我。 Igy的回答更好。或者使用FQL。 – Dema

6

比avs099的回答(单电)更快:

调用API,使用一个访问令牌为应用程序,以/me/friends?fields=installed(或/USER_ID/friends?fields=installed为应用访问令牌)

+0

有没有办法让这个只返回安装了应用程序的用户而不是所有用户?或者,有没有办法通过FQL获取这些数据?我没有在FQL文档中看到“已安装”参数。 – Joe

+4

当然,我在不久之后发现了stackoverflow上的FQL:从用户中选择name,uid,pic_small,其中is_app_user = 1和uid in(从uid1 = me()中选择朋友的uid2)concat(first_name,last_name)order asc – Joe

+0

@Igy有没有办法只检索当前安装了该应用程序的ID,而不是将每个人都带入? –

0

我跑入同样的问题,但在使用带有FQL的Facebook API时仍然有点模糊。 Facebook的FQL页面几乎没有任何帮助,所以我继续为未来可能为此付出努力的人写下了一个快速解决方案。

可以这么说,如果您使用的是Facebook PHP SDK,那么很长时间以来,FQL解决方案可以被压缩成一对联系线,这非常好。 My Facebook API Solution

0

如果使用的是考拉,你可以做这样

在控制器user.rb

@user = User.all 

在模型user.rb

def friends_using_app 
facebook { |fb| fb.get_connection("me", "friends?fields=installed") } 
end 

在视图

<% friends = current_user.friends_using_app %> 
<% friends_using_app = friends.find_all {|x| x['installed'] == true} %> 
<% friends_id = friends_using_app.map {|x| x['id']} %> 
<% show_friends = @user.find_all{|x| x[:uid] = friends_id} %> 
<% show_friends.each do |x| %> 
<%= image_tag x.avatar %> 
<% end %> 
相关问题