These "objects" are actually pages, so to get a friend list that looks like a movie or book (page), use this query:
SELECT uid FROM page_fan WHERE page_id = 91290503700 AND uid IN (SELECT uid2 FROM friend WHERE uid1=me())
Try fql.query in the console, it will be retrieved by all your friends who like the movie Inception.
EDIT:
An obvious way to get movies (for example) that your friends would like:
SELECT page_id,uid FROM page_fan WHERE type="MOVIE" AND uid IN ( SELECT uid2 FROM friend WHERE uid1=me() )
But I noticed that it will not return all users if the set is large (which, most likely, will be for each user). So I did a hack to get you started!
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);
This code performs the following actions:
- Get all the MOVIE IDs your friends like.
- Remove duplicate results and divide the resulting array into a set of arrays (10 films each)
- Request Facebook again to get friends for each set (10 movies at a time) who hopefully will bring you a full list of friends
- sort by movie id
And the result will be something like this:
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 ) )
Here you can check your favorite ... etc.
PS: As I said above, just to get you started, and I think you can cache some queries and improve performance.
ifaour
source share