gpt4 book ai didi

php - Facebook API 使用 insights php sdk

转载 作者:可可西里 更新时间:2023-11-01 12:35:26 26 4
gpt4 key购买 nike

我正在努力使用 php 中的 GRAPH API 提取数据。我不太了解 Facebook Developers 上的文档。我也找不到任何例子来帮助。我想让我的 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;
}

它返回这个:

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
(
)

)

我在那里没有看到任何我可以使用的信息,这些信息仅用于 page_impressions。我什至将日期更改为从 7 月 31 日开始到 10 月 31 日结束,但仍然一无所获。我的两个问题是: 1.我做错了什么? 2.如何多次调用获取上面列表中的所有数据?

先谢谢你!

最佳答案

  1. What did I do wrong?

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

  1. 对于未公开的数据分析指标(page_impressionspage_stories 等),您的访问 token 必须具有 read_insights许可。
  2. 仅为拥有超过 30 人点赞的 Facebook 主页生成见解。 (您的 Facebook 页面必须有超过 30 位关注者)

对于第 1 点,如果您没有权限,Facebook Graph Api 不会抛出错误,它只是不会给您数据(因为它不是公开的)。为此,您必须为您的 Facebook 应用提交 read_insight 权限并获得 reviewed。由 Facebook 团队批准。

或者(不推荐的方式)检查: How to get a never expiring Facebook Page Access Token

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

  1. 登录 Graph Api Explorer
  2. 点击“获取 token ”,然后点击“获取用户访问 token ”

    enter image description here

  3. 单击“扩展权限”选项卡并选中 read_insights,然后单击获取访问 token 。

    enter image description here

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

  5. 现在在图谱 API 查询字段中输入测试查询并单击提交:

    enter image description here

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

  1. How to make multiple calls to get all of the data in the list above?

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";
}
}

关于php - Facebook API 使用 insights php sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33837208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com