FQL Graph API: Общие друзья

Я знаю, что вы не можете подружиться с друзьями, но можете ли вы получить общих друзей, используя какой-либо запрос, с помощью вычислительной эффективности?

Могу ли я даже перебирать своих друзей, чтобы узнать, кто из них дружит с мишенью? Есть ли хороший способ получить друзей-друзей?

Solutions Collecting From Web of "FQL Graph API: Общие друзья"

Вы можете сделать это следующим образом:

$facebook = new Facebook(array( 'appId' => FB_ID, 'secret' => FB_APP_SECRET, 'cookie' => true, )); $fql = "SELECT id FROM profile WHERE id IN (SELECT uid2 FROM friend WHERE uid1=me())"; $response = $facebook->api(array( 'method' => 'fql.query', 'query' =>$fql, )); 

Это вернет идентификатор общих друзей. Надеюсь, это поможет вам 🙂

РЕДАКТИРОВАТЬ:

Если вы хотите получить общих друзей между вами и id = 13245, вы можете сделать так:

 $facebook = new Facebook(array( 'appId' => FB_ID, 'secret' => FB_APP_SECRET, 'cookie' => true, )); $fql = "SELECT uid1, uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM friend WHERE uid1=me() AND uid2 = '13245' ) AND uid2 IN (SELECT uid2 FROM friend WHERE uid1=me())"; $response = $facebook->api(array( 'method' => 'fql.query', 'query' =>$fql, )); 

Он вернет все общие друзья id.

Надеюсь, это даст вам то, что вы хотите.

Это может быть старым, мне нужно рассчитать общих друзей между пользователем X и мной и обнаружил, что ответ @Sabari полезен, за исключением того, что у него была ошибка (ненужный внутренний запрос)

 SELECT uid2 FROM friend WHERE uid1=me() AND uid2 = '13245' ) 

Этот внутренний запрос даст один результат (13245), поскольку таблица друзей имеет два столбца (оба составляют первичный ключ таблицы), а предложение where помещает условие в оба столбца.

поэтому весь запрос после удаления этого внутреннего запроса должен быть:

 SELECT uid1, uid2 FROM friend where uid1='13245' and uid2 in (SELECT uid2 FROM friend where uid1=me()) 

Этот запрос вычисляет список всех друзей « where uid1='13245' ( where uid1='13245' ), которые также являются моими друзьями (внутренний запрос)

вот мой код, чтобы получить список общих друзей в python

 def get_friends_ids(id): query = "select uid1,uid2 from friend where uid1=\"" + str(id) + "\" and uid2 in (select uid2 from friend where uid1=me())" query = urllib2.quote(query) url = "https://graph.facebook.com/fql?q=" + query + "&access_token=" + access_token data = urllib2.urlopen(url).read() j = json.loads(data) ids = [] for record in j['data']: ids.append(record['uid2']) return ids 

У меня была такая же проблема. Хотя ответить на вопрос очень поздно, это поможет кому-то. Вот почему ответ на этот вопрос.

Попробуйте этот запрос fql:

 $query="SELECT uid, name, work, education FROM user WHERE uid!=$source_id AND uid IN (SELECT uid1, uid2 FROM friend WHERE uid1 IN (SELECT uid2 FROM friend WHERE uid1=$target_id AND uid2 = '$source_id' ) AND uid2 IN (SELECT uid2 FROM friend WHERE uid1=$target_id)) ORDER BY name"; $user_info=$this->facebook->api(array('method'=>'fql.query', 'query'=>$query)); 

Благодаря этому мы можем получить информацию об общих друзьях.