0

我知道你不能得到朋友的朋友,但是你能以计算有效的方式使用某些查询来获得共同的朋友吗?FQL图形API:共同朋友

我可以通过我的朋友们遍历,看看他们中的哪些人是目标朋友吗?有没有什么好的方法可以让共同的朋友?

回答

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 。

希望这给你你想要的。

+0

我不明白这是如何工作的。我在哪里放第二个用户?假设我希望我()和id = 13245之间的共同朋友如何构建该查询? – JoshDG 2012-01-31 05:37:15

+0

你现在得到了什么..你有没有得到一些朋友ID – Sabari 2012-01-31 06:12:01

+0

请检查我的编辑 – Sabari 2012-01-31 06:54:15

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

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

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