Facebook FQL返回<fql_query_response list =“true”> </fql_query_response>

时间:2010-08-03 19:36:30

标签: ruby facebook facebook-fql

我正在尝试使用浏览器获取facebook fql查询,我有一个有效的oauth令牌(我可以使用它进行图形api调用)。

这是我试过的网址:

https://api.facebook.com/method/fql.query?query=SELECT metric, value FROM insights WHERE object_id=89192912655 AND end_time=1280430050 AND period=86400 AND metric='page_fans'&access_token=?

我还尝试首先通过sql编码器运行fql查询:

https://api.facebook.com/method/fql.query?query=SELECT%20metric%2C%20value%20FROM%20insights%20WHERE%20object_id%3D89192912655%20AND%20end_time%3D1280430050%20AND%20period%3D86400%20AND%20metric%3D'page_fans'&access_token=?

我尝试了一些其他指标,我也可以通过图表api获取指标,所以我知道它们就在那里。

我确定我做了一些愚蠢的事情,但我现在已经被困了一段时间了!每次通话都会返回:

<?xml version="1.0" encoding="UTF-8"?>
<fql_query_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" list="true"/>

也许我的日期有问题,我用它来得到日期:(红宝石)

t = Time.now
=> Tue Aug 03 15:00:50 -0400 2010
>> t = t - 5.days
=> Thu Jul 29 15:00:50 -0400 2010
>> t.to_i
=> 1280430050

任何想法?

5 个答案:

答案 0 :(得分:5)

嘿伙计们,我们已经确认了这个错误。这是因为end_time必须与PST中的日期分隔符对齐,以便Insights表返回任何数据。为了解决这个问题,我们引入了两个可用于查询见解表的自定义函数:

  1. end_time_date():以字符串形式接受DATE(例如'2010-08-01')
  2. period():接受'life','day','week'和'month'
  3. 例如,您现在可以使用以下方式查询数据洞察表:

    SELECT metric, value FROM insights
    WHERE object_id = YOUR_APP_ID AND
          metric = 'application_active_users' AND
          end_time = end_time_date('2010-09-01') AND
          period = period('day');
    

    我们会尽快记录这些功能,抱歉给您带来不便!

    P.S。如果您不想使用end_time_date()函数,请确保查询中的end_time时间戳与PST中的日期分隔符保持一致。

    谢谢!

    Facebook见解小组

答案 1 :(得分:1)

您看到的响应是空响应,并不一定意味着没有可用的指标数据。一些可能导致这种情况的想法:

  • 您使用的是用户访问令牌吗?如果是,用户是否拥有该页面?是否为用户/访问令牌授予了“read_insights”扩展权限? 'offline_access'怎么样?
  • end_time需要指定为太平洋时间午夜。
  • 有效期为86400,604800,2 2592000(日,周,月)
  • 查询'page_fan_adds'指标是否会在给定时间内产生有意义的结果?

虽然我没有使用过见解表,但使用Facebook的FQL告诉我不要错过错误消息,错误代码但是请尝试按照文档(如果有的话)然后试验它......

至于日期,今天午夜使用以下红宝石片段:

Date.new(2010,9,14).to_time.to_i

我还在Graph API文档页面上找到了以下内容:

  

<强>模拟

     

您可以通过请求“manage_pages”扩展权限来模拟用户管理的网页。

     

一旦用户授予您的应用程序“manage_pages”权限,“accounts”连接将为当前用户管理的每个页面生成额外的access_token属性。这些access_tokens可用于代表页面进行调用。用户授予您的应用程序的权限现在也适用于他们的页面。 (source

您是否尝试过请求此权限并在图谱API查询中使用&amp; metadata = 1来获取每个帐户的访问令牌?

答案 2 :(得分:0)

如果您想知道Facebook页面的粉丝数量,请使用以下内容:

https://graph.facebook.com/cocacola

回复包含fan_count属性。

答案 3 :(得分:0)

我不确定日期是否正确。你真的希望日期为整数吗? 通常SQL以db-format格式化日期,因此要格式化它,您可以使用:

Date.new(2010,9,14).to_s(:db)
(Time.now - 5.days).to_s(:db)
# or even better:
5.days.ago.to_s(:db)

答案 4 :(得分:0)

如果像我一样,你从另一个FQL语句中获取此信息后来到这里,那么你的问题不包括access_token参数,例如

https://api.facebook.com/method/fql.query?query=SELECT+name+FROM+user+WHERE+uid+%3D+me()&access_token= ...

(您可以使用fb.getAccessToken())