Facebook PHP Graph API无法返回完整数据

时间:2014-08-05 18:40:10

标签: php facebook facebook-graph-api facebook-php-sdk

我在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权限。

有任何想法或建议吗?


在此先感谢,嗨迈克

1 个答案:

答案 0 :(得分:2)

这是一个权限问题。 如果您曾见过:

{
    "data": [
    ],
    ...
}

您的访问令牌可能没有足够的权限来访问您要求的数据(那个或那里没有数据)。

我的问题是即使我是应用的开发者,它也获得了Facebook的批准(manage_pagesread_insights权限) - 我无法使用应用访问令牌以检索洞察数据。

我需要一个用户访问令牌!

我通过手动创建每Facebook's documentation的登录流程轻松生成用户访问令牌。这个stackoverflow thread也很有用。

有关Facebook令牌的更多信息here

希望这可以帮助任何偶然发现这个帖子的人!

-Mike