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纬度/经度.但是,出于性能原因,如果可能的话,我想只运行一个多查询.
编辑:
该查询应该通过将第二个查询调整为:
'"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)
| 归档时间: |
|
| 查看次数: |
6326 次 |
| 最近记录: |