7
我試圖找出如何找到多少朋友喜歡一個特定的實體。在Facebook的圖形API如何找到所有的朋友們都喜歡某本書或電影
例如,對於一個給定的書或電影,我怎麼可以看一下有多少朋友已經喜歡同一本書或電影。
我相信,當我們顯示FB信息確實出現了:像按鈕社交插件,但我希望得到那個數,所以我可以編程我的朋友等爲降序中顯示最流行的書籍。
我的後臺是PHP的,但我也使用Javascript SDK。 感謝您輸入事先
我試圖找出如何找到多少朋友喜歡一個特定的實體。在Facebook的圖形API如何找到所有的朋友們都喜歡某本書或電影
例如,對於一個給定的書或電影,我怎麼可以看一下有多少朋友已經喜歡同一本書或電影。
我相信,當我們顯示FB信息確實出現了:像按鈕社交插件,但我希望得到那個數,所以我可以編程我的朋友等爲降序中顯示最流行的書籍。
我的後臺是PHP的,但我也使用Javascript SDK。 感謝您輸入事先
這些「物」實際上是網頁,因此檢索您的好友列表,像一部電影或者一本書(頁),使用此查詢:
SELECT uid FROM page_fan WHERE page_id = 91290503700 AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())
試試這個在fql.query的控制檯中,它將檢索喜歡Inception電影的所有朋友ID。
編輯:
檢索電影最顯而易見的方法(例如),你的朋友喜歡的是:
SELECT page_id,uid
FROM page_fan
WHERE type="MOVIE"
AND uid IN (
SELECT uid2
FROM friend
WHERE uid1=me()
)
但我注意到,它不會返回所有用戶如果設置很大(對每個用戶來說最有可能的情況下)..所以我做了一個破解只是爲了讓你開始!
function sectionArray($array, $step) {
$sectioned = array();
$k = 0;
for ($i=0;$i < count($array); $i++) {
if (!($i % $step)) {
$k++;
}
$sectioned[$k][] = $array[$i];
}
return $sectioned;
}
$result = $facebook->api(array(
"method" => "fql.query",
"query" => "SELECT page_id FROM page_fan WHERE type='MOVIE' AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())"
));
$pages = array();
foreach($result as $k=>$v) {
$pages[] = $v["page_id"];
}
$pages = array_unique($pages);
$pages = array_values($pages);
$sets = sectionArray($pages,10);
$movies = array();
foreach($sets as $set) {
$page_set = implode(',',$set);
$friends = $facebook->api(array(
"method" => "fql.query",
"query" => "SELECT page_id,uid FROM page_fan WHERE page_id IN ($page_set) AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())"
));
$movies[] = $friends;
}
$final = array();
foreach($movies as $v)
foreach($v as $k=>$arr)
$final[$arr["page_id"]][] = $arr["uid"];
print_r($final);
此代碼執行以下操作:
其結果將是這樣的:
Array
(
[movie_id] => Array
(
[0] => friend_id
[1] => friend_id
[2] => friend_id
[3] => friend_id
)
[movie_id] => Array
(
[0] => friend_id
[1] => friend_id
[2] => friend_id
[3] => friend_id
[4] => friend_id
[5] => friend_id
[6] => friend_id
[7] => friend_id
)
[movie_id] => Array
(
[0] => friend_id
)
[movie_id] => Array
(
[0] => friend_id
)
)
從這裏,你可以檢查最喜歡...等
PS:由於我說上面只是爲了讓你開始,我想你可以緩存一些查詢和提高性能。
感謝ifaour - 感謝你的幫助。我試圖嘗試的是 - 對於給定的類別說「電影」 - 是否有可能根據喜歡的人數只顯示前10名熱門電影**我的朋友** - 所以我不會有電影ID - 它應該基於類別,並且對於給定類別,根據朋友的** LIKES **的數量顯示前10種流行歌曲或電影或書籍。非常感謝 – Gublooo 2011-02-16 08:18:16