4

我正在尝试让 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

有任何想法吗?

4

5 回答 5

5

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

  1. end_time_date() : 接受字符串形式的日期(例如'2010-08-01')
  2. period() : 接受 'lifetime', 'day', 'week' 和 'month'

例如,您现在可以使用以下命令查询见解表:

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

我们将尽快记录这些功能,给您带来的不便敬请谅解!

PS 如果您不想使用 end_time_date() 函数,请确保查询中的 end_time 时间戳与 PST 中的日期分隔符对齐。

谢谢!

Facebook 洞察团队

于 2010-10-11T05:58:16.917 回答
1

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

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

虽然我没有使用见解表,但使用 Facebook 的 FQL 教会我不要期望错误消息、错误代码,而是尝试遵循文档(如果可用)然后进行试验......

至于日期,请在今天的午夜使用以下 ruby​​ 代码段:

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

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

冒充

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

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

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

于 2010-09-14T09:05:56.570 回答
0

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

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

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

于 2010-11-05T12:36:36.330 回答
0

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

https://graph.facebook.com/cocacola

响应包含一个fan_count属性。

于 2010-09-14T07:20:43.987 回答
0

I'm not sure the date is correct. do you really want the date as an integer? Usually SQL takes dates in db-format, so to format it you'd use:

Date.new(2010,9,14).to_s(:db)
(Time.now - 5.days).to_s(:db)
# or even better:
5.days.ago.to_s(:db)
于 2010-09-14T12:06:10.253 回答