FQL:查询事件表返回venue.name而不是venue.id

时间:2012-08-08 06:39:56

标签: facebook-php-sdk facebook-fql fql.multiquery

在进行查询以获取事件详细信息时,我似乎在结果集中获得了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
            (
            )

    )

)

2 个答案:

答案 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。