【问题标题】:FQL: query for event table returns venue.name instead of venue.idFQL:查询事件表返回场地.name 而不是场地.id
【发布时间】:2012-08-08 06:39:56
【问题描述】:

进行查询以获取活动详细信息时,我似乎在结果集中获得了场地名称而不是场地 ID。表结构是否发生了未经宣布的更改,或者我做错了什么。 Graph API Explorer 提供了venue.id,但在我自己的网站中通过 PHP SDK 使用 FQL 时,它是我得到的 place.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
            (
            )

    )

)

【问题讨论】:

  • 你能做一个var_dump$result 并告诉我们它到底包含什么吗? (相关部分;请使用该信息更新您的问题,因为在 cmets 内部将难以阅读。)
  • 转储添加了相关部分。

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


【解决方案1】:

如果我测试这个查询

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)" }'));

改为?

【讨论】:

  • 没有变化。它仍然给出了场地名称。是的,Graph API 资源管理器中的 FQL 选项卡始终按照应有的方式提供了场所。
  • 奇怪。当与 Graph API Explorer 应用程序一起使用时,这会为您返回什么? developers.facebook.com/tools/…
  • Graph API 和 FQL 查询浏览器都返回了它们应该返回的内容。只有当我在自己的页面上运行 FQL 查询时,它才会将场所 ID 更改为名称。真奇怪。
  • 可能是访问令牌问题...?
  • 好吧,最后它似乎只是返回一些场地的 id 和其他场地的名称。所以我会在 id 可用时提供场地数据。
【解决方案2】:

我今天遇到了这个问题,并花了很多时间对其进行故障排除。它似乎与访问令牌有关。当我使用我的应用程序的访问令牌请求场地数据时,对于某些场地,我得到的只是场地名称字段。但是,如果我使用 Graph API Explorer 生成不同的令牌,我会按预期获得 place.id 字段。

我什至用我的应用令牌替换了 Graph API Explorer 生成的访问令牌,果然我收到的只是场地名称。

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多