2012-05-14 24 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 %> 
相關問題