Facebook API使用洞察力php sdk

kin*_*986 8 php facebook facebook-graph-api

我正在努力用PHP中的GRAPH API提取数据.我不了解Facebook开发者的文档.我也找不到任何帮助的例子.我想让我的API给我以下(在本月的第一天和当月的最后一天之间):

  • 新喜欢
  • 访问
  • 有机覆盖率(每月总计)
  • 有机覆盖率(每月的每一天)
  • 付费覆盖面(每月总计)
  • 付费到达(每月的每一天)
  • 迄今为止的成本
  • 订婚
  • 有机印象
  • 付费印象

我已经达到了能够提取数据的能力,但是当我测试使用洞察力部分时,它并没有给我数据.例如我有这个:

// Sets the default fallback access token so we don't have to pass it to each request
$fb->setDefaultAccessToken('{access-token}');

try {
  $response = $fb->get('/{page-id}/insights/page_impressions?since=1443650400&until=1446246000', $accessToken);
  $graphEdge = $response->getGraphEdge();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
Run Code Online (Sandbox Code Playgroud)

它返回:

Facebook\GraphNodes\GraphEdge Object
(
    [request:protected] => Facebook\FacebookRequest Object
        (
            [app:protected] => Facebook\FacebookApp Object
                (
                    [id:protected] => *******************
                    [secret:protected] => ********************
                )

            [accessToken:protected] => *******************
            [method:protected] => GET
            [endpoint:protected] => /{page-id}/insights/page_impressions?since=1443650400&until=1446246000
            [headers:protected] => Array
                (
                    [Content-Type] => application/x-www-form-urlencoded
                )

            [params:protected] => Array
                (
                )

            [files:protected] => Array
                (
                )

            [eTag:protected] => 
            [graphVersion:protected] => v2.5
        )

    [metaData:protected] => Array
        (
            [paging] => Array
                (
                    [previous] => https://graph.facebook.com/v2.5/{page-id}/insights/page_impressions?access_token=*******************&appsecret_proof=*******************&since=1440968400&until=1443564000
                    [next] => https://graph.facebook.com/v2.5/{page-id}/insights/page_impressions?access_token=*******************&appsecret_proof=*******************&since=1446159600&until=1448755200
                )

        )

    [parentEdgeEndpoint:protected] => 
    [subclassName:protected] => 
    [items:protected] => Array
        (
        )

)
Run Code Online (Sandbox Code Playgroud)

我没有看到任何可以使用的信息,这仅仅是针对page_impressions.我甚至改变了日期,从7月31日开始到10月31日结束,但仍然没有任何结果.我的两个问题是:1.我做错了什么?2.如何进行多次调用以获取上面列表中的所有数据?

先谢谢你!

cwp*_*wps 7

  1. 我做错了什么?

由于响应没有抛出错误,请确保您满足以下要求:

  1. 若要深入了解指标,是不公开的(page_impressions,page_stories,等),您的访问令牌必须有read_insights许可.
  2. 只有拥有超过30人喜欢的Facebook页面才会生成见解.(您的Facebook页面必须有> 30个粉丝)

对于第1点,如果您没有权限,Facebook Graph Api不会抛出错误,它只是不会给您数据(因为它不公开).对于这一点,你必须申请提交read_insight同意您的Facebook应用程序,并获得审查通过Facebook团队批准.

或者(不推荐的方式)检查: 如何获得永不过期的Facebook页面访问令牌

这是使用Graph Api Explorer显示指标数据的方法:

  1. 登录图Api Explorer
  2. 点击"获取令牌",然后点击"获取用户访问令牌"

    在此输入图像描述

  3. 单击"扩展权限"选项卡,选中read_insights并单击"获取访问令牌".

    在此输入图像描述

  4. 授予自己所请求的权限.

  5. 现在在Graph API查询字段中输入测试查询,然后单击提交:

    在此输入图像描述

在那里,您将看到指标的数据.如果它没有生成任何数据,那么它是因为第2点(必须有> 30次)

  1. 如何进行多次调用以获取上面列表中的所有数据?

Facebook允许批量请求,例如使用php-sdk:

$fb = new Facebook\Facebook([
  'app_id' => '{app-id}',
  'app_secret' => '{app-secret}',
  'default_graph_version' => 'v2.5',
  ]);

$fb->setDefaultAccessToken('user-access-token');

// Example : Get page impression
$requestPageImpression = $fb->request('GET', '/{page-id}/insights/page_impressions?since=1443650400&until=1446246000"');

// Example : Get Organic page impressions
$requestPageImpressionOrganic = $fb->request('GET', '{page-id}/insights/page_impressions_organic');

// Add more variable and API req, according to your list
// $requestPageStories = $fb->request('GET','....');
// etc...

$batch = [
    'page-impression' => $requestPageImpression,
    'page-impression-organic' => $requestPageImpressionOrganic, 
    // add more for your list
    ];

echo '<h1>Make a batch request</h1>' . "\n\n";

try {
  $responses = $fb->sendBatchRequest($batch);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  // When Graph returns an error
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  // When validation fails or other local issues
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}

foreach ($responses as $key => $response) {
  if ($response->isError()) {
    $e = $response->getThrownException();
    echo '<p>Error! Facebook SDK Said: ' . $e->getMessage() . "\n\n";
    echo '<p>Graph Said: ' . "\n\n";
    var_dump($e->getResponse());
  } else {
    echo "<p>(" . $key . ") HTTP status code: " . $response->getHttpStatusCode() . "<br />\n";
    echo "Response: " . $response->getBody() . "</p>\n\n";
    echo "<hr />\n\n";
  }
}
Run Code Online (Sandbox Code Playgroud)