如何使用Facebook Graph API执行FQL Insights查询

问题描述:

我尝试使用Graph API执行FQL查询而无法成功获取Insights计数器的值。如何使用Facebook 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”洞察计数器,并使用库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')"); 

我重新ceive总是空的响应

{[]} 

代码相同,但与库5.2.1 我收到始终

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

在此描述的相同问题的好回应:Error with FQL query with library 5.4.1,但与其他句法。

目前我使用REST API(使用libary 5.2.1)进行FQL Insights查询,但我想使用Graph API(使用库5.4.1)迁移到FQL Insights查询,因为REST API已被弃用。

哪里错误:

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

此致敬礼。

+0

在FB C#SDK某些时候,我们改变了使用图形API的FQL而不是休息。这可能是它现在不工作的原因。你可以使用图形浏览器和fql并检查你是否得到任何结果。如果你使用图形浏览器获取它然后可以在codeplex中提交错误。 – prabir 2012-01-07 16:11:42

此问题涉及到Facebook C#SDK

你可以做也许最好的事情是文件CodePlex上的错误,并更换的end_time_date用法"time in seconds"period"lifetime"

我与Facebook的图形API资源管理器

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

+0

Google员工注意事项:如果您使用某些指标,您也会得到这个讨厌的空白回复。例如:如果我查询“page_views”指标,我会得到这个空的答案。但是,如果我查询“page_fans”,我会得到一个可以接受的答案。太奇怪了。错误,也许? – rinogo 2014-03-24 19:30:36

+0

更新:它看起来像只能使用某些“度量”值和某些“周期”值。如果你不这样做,你可能会看到类似上面空白数据集的行为。允许使用'metric' /'period'组合的文档:https://developers.facebook.com/docs/graph-api/reference/insights – rinogo 2014-03-24 20:22:33

我找到了另一种方式来获取可靠

我发现检索见解的另一种方式,这似乎是可靠的其运作方式。 此处找到的文档http://developers.facebook.com/docs/reference/api/insights/

有更多选项来允许格式和周期更改 - 下面的例子。

https://graph.facebook.com/2439131959/insights/application_active_users/[period]?format=json &因为= [时间戳] &直到= [时间戳] &的access_token = [的access_token]

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

C#SDK例如:

FacebookClient fbClient =新FacebookClient([APPID],[秘密]);

 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"]); 

请确保您有正确的权限,当你得到你的访问令牌

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

对于我的空白回复,这是一个简单的“修复”。谢谢!我想知道为什么FB只是返回空数据而不是错误来解释错误。 – 2013-07-29 23:40:59