在进行查询以获取事件详细信息时,我似乎在结果集中获得了venue.name而不是venue.id。表格结构是否有未经宣布的变更,或者我做错了什么。 Graph API Explorer提供了venue.id,但是当我在自己的网站上通过PHP SDK使用FQL时,它就是我得到的venue.name。
下面是代码:
$fql='{
"event_info": "SELECT name,description, pic_small,pic_big, eid,venue,location FROM event WHERE eid ='.$_GET['id'].'",
"event_venue":"SELECT name, username, page_id, location FROM page WHERE name IN (SELECT venue.id FROM #event_info)"
}';
$setup = array(
'method' => 'fql.multiquery',
'queries' => $fql,
'callback' => ''
);
$result = $facebook->api($setup);
这会导致“event_venue”结果集为空。
这是转储:
Array
(
[0] => Array
(
[name] => event_info
[fql_result_set] => Array
(
[0] => Array
(
[eid] => 410351692336116
[venue] => Array
(
[name] => Boothill
)
[location] => Boothill
)
)
)
[1] => Array
(
[name] => event_venue
[fql_result_set] => Array
(
)
)
)
答案 0 :(得分:2)
如果我测试此查询
SELECT name,description, pic_small,pic_big, eid,venue,location
FROM event WHERE eid ='410351692336116'
使用Graph API资源管理器中的FQL选项卡(!),我得到了
"venue": {
"id": 126049334121592
}
而不是场地名称。
使用第二个查询
进行类似你的多重查询"event_venue":"SELECT name, username, page_id, location FROM page
WHERE page_id IN (SELECT venue.id FROM #event_info)"
我也收到了场地信息。
如果您不使用带有
的$ setup数组进行查询,请检查是否会得到不同的结果'method' => 'fql.multiquery',
但只是
$facebook->api('/fql?q='.urlencode('{ "event_info": "…", "event_venue": "… FROM page
WHERE page_id IN (SELECT venue.id FROM #event_info)" }'));
代替?
答案 1 :(得分:0)
我今天遇到了这个问题,并花了很长时间对其进行故障排除。它似乎与访问令牌有关。当我使用我的App的访问令牌来请求场地数据时,对于一些场所我得到的是venue.name字段。但是,如果我使用Graph API Explorer生成不同的令牌,我会按预期获得venue.id字段。
我甚至用我的应用程序令牌替换了图谱API资源管理器生成的访问令牌,而且我收到的所有内容肯定都是venue.name。