我尝试使用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')");
我总是收到一个空的回复
{[]}
使用相同的代码但使用库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。
错误在哪里:
最好的问候。
答案 0 :(得分:2)
我使用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
答案 1 :(得分:1)
我发现了另一种检索可靠信息的方法
我找到了另一种检索洞察力的方法,这种方式似乎是可靠的。 文档在此处http://developers.facebook.com/docs/reference/api/insights/。
有更多选项允许格式和句点更改 - 以下示例。
https://graph.facebook.com/2439131959/insights/application_active_users/ [时间段]格式= JSON&安培;因为= [时间戳]&安培;直到= [时间戳]&安培; =的access_token [的access_token]
期间是日,月,周,寿命。 时间戳只能是有效的PST午夜。 access_token =可能。 1.不需要许可的指标。 2. app_id | secret_code或 3.您的身份验证令牌被授予您可以访问应用程序或页面(即所有者或洞察用户)的洞察数据的权限。
C#sdk示例:
FacebookClient fbClient =新的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"]);
答案 2 :(得分:1)
获取访问令牌时确保您拥有正确的权限
<fb:login-button perms="read_insights"></fb:login-button>
答案 3 :(得分:0)
此问题与 Facebook C#SDK 。
有关您可以做的最好的事情是在codeplex上提交错误,并将end_time_date
的使用情况替换为"time in seconds"
和period
至"lifetime"
。