【问题标题】:How execute a FQL Insights query with Facebook Graph API如何使用 Facebook Graph API 执行 FQL Insights 查询
【发布时间】:2012-01-06 17:02:35
【问题描述】:

我尝试使用 Graph API 执行 FQL 查询以获取 Insights 计数器的值,但没有成功。

有人知道我该怎么做吗?

我使用“Facebook C# SDK”版本 5.4.1、C# 4.0。

如果我使用文档中提供的 C# 示例代码

    var fb = new FacebookClient(m_accessToken);
    dynamic result = fb.Query("SELECT name, uid FROM user WHERE uid= me()");

我收到了很好的回应

{"name":"","uid":100002632407830}

使用相同的语法,如果我请求“pages_fans”洞察计数器并使用 library 5.4.1

var fb = new FacebookClient(m_accessToken);
  dynamic result = fb.Query("SELECT metric, value FROM insights WHERE object_id=6176018219 AND metric='page_fans' AND end_time=end_time_date('2011-12-31') AND period=period('lifetime')");

我总是收到一个空的回复

 {[]}

使用相同的代码,但使用库 5.2.1 我总是收到很好的回应

 {[{"metric":"page_fans","value":"125535"}]}

这与此处描述的问题相同:Error with FQL query with library 5.4.1,但语法不同。

目前我使用 REST API(使用库 5.2.1)使用 FQL Insights 查询,但我想迁移到使用 Graph API(使用库 5.4.1)的 FQL Insights 查询,因为不推荐使用 REST API。

错误在哪里:

  1. 在我的语法请求中?
  2. 在“Facebook C# SDK”库中?
  3. 在 Facebook 服务器上?

最好的问候。

【问题讨论】:

  • 在 fb c# sdk 中的某个时间点,我们更改为使用 graph api for fql 而不是 rest。这可能是它现在不起作用的原因。你可以使用图形资源管理器和 fql 并检查你是否得到任何结果。如果您使用图形资源管理器获取它,则可以在 codeplex 中提交错误。

标签: facebook-graph-api facebook-c#-sdk facebook-fql facebook-insights


【解决方案1】:

我使用 Facebook Graph API Explorer 提出了一个请求

https://graph.facebook.com/fql?q=SELECT metric, value FROM insights
WHERE object_id=6176018219 AND metric='page_fans' AND
end_time=end_time_date('2011-12-31') AND period=period('lifetime')

我总是收到一个空的回复。

{
  "data": [
  ]
}

这是 Facebook 的错误。

在 Facebook 上创建了一个关于它的错误:http://developers.facebook.com/bugs/232510993491615?browse=search_4f08c675cce9d2265724293

【讨论】:

  • Google 员工请注意:如果您使用某些指标,您也会收到这种令人讨厌的空洞回复。例如:如果我查询“page_views”指标,我会得到这个空响应。但是,如果我查询“page_fans”,我会得到可接受的响应。太奇怪了。也许是虫子?
  • 更新:您似乎只能将某些 metric 值与某些 period 值一起使用。如果不这样做,您可能会看到类似上述空数据集的行为。允许的metric/period 组合的文档:developers.facebook.com/docs/graph-api/reference/insights
【解决方案2】:

我找到了另一种检索可靠信息的方法

我找到了另一种检索见解的方法,它似乎是可靠的。 在此处找到的文档http://developers.facebook.com/docs/reference/api/insights/

提供更多选项以允许格式和期间更改 - 下面的示例。

https://graph.facebook.com/2439131959/insights/application_active_users/[period]?format=json&since=[timestamp]&until=[timestamp]&access_token=[access_token]

期间是日、月、周、生命周期。 时间戳必须是有效的 PST 午夜。 access_token = 可能是。 1. 不需要许可的指标什么都没有。 2. app_id|secret_code 或 3. 您的身份验证令牌授予您访问应用程序或页面的洞察数据(即所有者或洞察用户)的访问权限。

C# SDK 示例:

FacebookClient fbClient = new FacebookClient([appID], [secret]);

        DateTime untilDate= (new DateTime([Now].Year, [Now].Month, [Now].Day));
        DateTime sinceDate= (new DateTime([Now].Year, [Now].Month, [Now].Day)).AddDays(-1);
        TimeSpan t = (untilDate- new DateTime(1970, 1, 1));
        int timestampUntil = (int)t.TotalSeconds;
        t = (sinceDate- new DateTime(1970, 1, 1));
        int timeStampSince = (int)t.TotalSeconds;



        var result = (IDictionary<string, object>)fbClient.Get([appID] + "/insights/" + [metricID] + "/" + [period] + "?format=json&since="+timeStampSince+"&until="+timestampUntil );
         Console.WriteLine(result["data"]);

【讨论】:

    【解决方案3】:

    确保您在获取访问令牌时拥有正确的权限

    <fb:login-button perms="read_insights"></fb:login-button>
    

    【讨论】:

    • 对于我的空洞回复来说,这是一个如此简单的“修复”。谢谢!我想知道为什么 FB 只返回空数据而不是解释错误的错误。
    【解决方案4】:

    此问题与 Facebook C# SDK 相关。

    您可以做的最好的事情可能是在 codeplex 上提交一个错误,并将 end_time_date 的用法替换为 "time in seconds"period"lifetime"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多