FQL Graph API: общие друзья - PullRequest
       31

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

0 голосов
/ 31 января 2012

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

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

Ответы [ 3 ]

3 голосов
/ 31 января 2012

Вы можете сделать это так:

$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,
));

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

EDIT:

Если вы хотите найти общих друзей между вами и 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,
));

Он вернет всем общим друзьям идентификатор.

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

1 голос
/ 14 июня 2013

Это может быть старым, мне нужно было вычислить общих друзей между пользователем 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())

Этот запрос вычисляет список всех '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
0 голосов
/ 28 февраля 2012

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

Попробуйте этот запрос 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));

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

...