使用Graph FQL获取朋友的current_location的纬度/经度

pyr*_*o70 5 facebook facebook-fql

我正在尝试使用单个API调用获取所有用户朋友的纬度/经度.我相信我需要编写一个多查询FQL语句,但我无法使语法正确.

我相信这两个查询需要如下所示:

'"friends":"SELECT uid,current_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"'

'"location":"SELECT location FROM page WHERE id IN (SELECT current_location_id FROM #friends)"';
Run Code Online (Sandbox Code Playgroud)

我的问题是,我需要在第一个查询中获取current_location的ID,以便我可以在第二个查询中引用它,但我只知道如何获取包含id的数组.

谢谢你的帮助!

澄清:

我不想让朋友办理登机手续.相反,我想在Geo地图上绘制所有用户朋友的"current_location"(即他们居住的地方).我可以使用以下FQL查询获取用户的"current_location":

"SELECT uid,sex,current_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"
Run Code Online (Sandbox Code Playgroud)

此查询返回以下数组:

[current_location] => Array
            (
                [city] => New York
                [state] => New York
                [country] => United States
                [zip] => 
                [id] => 108424279189115
                [name] => New York, New York
            )
Run Code Online (Sandbox Code Playgroud)

其中不包含current_location的经度和纬度(上例中的纽约)

因此,我现在需要获取current_location的ID(例如108424279189115)并运行第二个FQL查询,例如:

"SELECT location,name FROM page WHERE page_id = 108424279189115)"
Run Code Online (Sandbox Code Playgroud)

获取current_location的纬度和经度.目前,我有一个运行第一个FQL查询的工作代码,然后在php中提取page_id,然后运行第二个FQL查询以获取current_location纬度/经度.但是,出于性能原因,如果可能的话,我想只运行一个多查询.

Jef*_*den 2

编辑:

该查询应该通过将第二个查询调整为:

'"location":"SELECT location FROM page WHERE id IN (SELECT current_location.id FROM #friends)"';
Run Code Online (Sandbox Code Playgroud)

在 FB API 中使用数组类型时,您可以通过执行 array.value 来访问任何查询中的值

另外,如果您需要的只是页面的 id,那么通过在第一个查询中执行 current_location.id 可能会获得更好的性能


您将想要使用 fql.multiquery,这里有一个类似的答案,可以根据您的需求进行定制:Facebook Graph API get all users and their status

有关多重查询的 FQL 文档位于:http ://developers.facebook.com/docs/reference/fql/

您还想获取签入对象的纬度/经度吗?如果是这样,您需要查看此资源:http://developers.facebook.com/docs/reference/fql/checkin/

编辑:

我不确定你想做的事情是否可行。我只是查看了 api 并测试了一些查询,您从朋友那里获取纬度/经度的唯一方法似乎是基于签入,如果需要,您可以从那里获取页面上的详细信息...甚至查看您的第二个查询,current_location_id 在页表中的任何位置都没有引用,从页表中选择位置将为您提供其所属位置的位置信息。也许您可以详细说明您想要实现的目标。

这是我使用 FQL 在 PHP 中编写的多查询语句(它将选择您所有朋友签到的坐标,然后从那里获取与该朋友相关的签到位置的详细信息):

try{
    $multiQuery = "{
        'query1':'SELECT coords, tagged_uids, page_id FROM checkin WHERE author_uid IN (SELECT uid2 FROM friend WHERE uid1 = me())',
        'query2':'SELECT name, description FROM page WHERE page_id IN (SELECT page_id FROM #query1)'
    }";

    $param = array(       
         'method' => 'fql.multiquery',       
         'queries' => $multiQuery,       
         'callback' => ''
    );       
    $queryresults = $facebook->api($param);
        print_r($queryresults);
    }
catch(Exception $o){
    print_r($o);
}
Run Code Online (Sandbox Code Playgroud)