Я знаю, что вы не можете подружиться с друзьями, но можете ли вы получить общих друзей, используя какой-либо запрос, с помощью вычислительной эффективности?
Могу ли я даже перебирать своих друзей, чтобы узнать, кто из них дружит с мишенью? Есть ли хороший способ получить друзей-друзей?
Вы можете сделать это следующим образом:
$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));
Благодаря этому мы можем получить информацию об общих друзьях.