0

我知道你不能得到朋友的朋友,但你能用一些查询以一种计算有效的方式得到共同的朋友吗?

我什至可以遍历我的朋友,看看他们中的哪一个是有目标的朋友吗?有什么好方法可以交朋友吗?

4

3 回答 3

3

你可以这样做:

$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。希望这可以帮助你:)

编辑:

如果你想得到你和 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。

希望这能给你你想要的。

于 2012-01-31T04:27:56.820 回答
1

这可能是旧的,我需要计算用户 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
于 2013-06-14T12:26:37.660 回答
0

我有同样的问题。虽然回答问题已经很晚了,但它会帮助别人。这就是为什么要回答这个问题。

试试这个 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));

通过这个我们可以得到共同的朋友信息。

于 2012-02-28T10:10:15.933 回答