我在Facebook的PHP SDK 4.0版中遇到了问题。
我只是想通过图谱API检索insights/page_fans_city
指标:
$request = new FacebookRequest($session, 'GET',
'/{my object}/insights/page_fans_city',
array('period' => 'lifetime'));
$response = $request->execute();
$client_graph_object = $response->getGraphObject();
print_r($client_graph_object);
但是,不会返回任何数据:
Facebook\GraphObject Object
(
[backingData:protected] => Array
(
[data] => Array
(
)
[paging] => stdClass Object
(
[previous] => https://graph.facebook.com/v2.0/...
[next] => https://graph.facebook.com/v2.0/...
)
)
)
我知道我有我要求的数据洞察数据。我可以通过Graph Explorer发出完全相同的请求:
→/v.2.0/ {my object} / insight / page_fans_city?period = lifetime
{
"data": [
{
"id": "{my object}/insights/page_fans_city/lifetime",
"name": "page_fans_city",
"period": "lifetime",
"values": [
{
"value": {
...
},
"end_time": "2014-08-01T07:00:00+0000"
},
{
"value": {
...
},
"end_time": "2014-08-02T07:00:00+0000"
}
],
"title": "Lifetime Likes by City",
"description": "Lifetime: Aggregated Facebook location data, sorted by city, about the people who like your Page. (Unique Users)"
}
],
"paging": {
"previous": "https://graph.facebook.com/v2.0/...,
"next": "https://graph.facebook.com/v2.0/...
}
}
我应该注意,如果我省略page_fans_city
段,我 接收数据。如果省略 - 我只能查看page_fans_country
的数据。因此
$request = new FacebookRequest($session, 'GET',
'/{myobject}/insights/page_fans_country',
array('period' => 'lifetime'));
和
$request = new FacebookRequest($session, 'GET',
'/{myobject}/insights',
array('period' => 'lifetime'));
将为我工作......
我怀疑它是我的访问令牌 - 但我不确定为什么会这样。我创建的应用只需要read_insights
权限。
有任何想法或建议吗?
在此先感谢,嗨迈克
答案 0 :(得分:2)
这是一个权限问题。 如果您曾见过:
{
"data": [
],
...
}
您的访问令牌可能没有足够的权限来访问您要求的数据(那个或那里没有数据)。
我的问题是即使我是应用和的开发者,它也获得了Facebook的批准(manage_pages
和read_insights
权限) - 我无法使用应用访问令牌以检索洞察数据。
我需要一个用户访问令牌!
我通过手动创建每Facebook's documentation的登录流程轻松生成用户访问令牌。这个stackoverflow thread也很有用。
有关Facebook令牌的更多信息here。
希望这可以帮助任何偶然发现这个帖子的人!
-Mike