Вызов функции-члена getData () с помощью API маркетинга в Facebook

В настоящее время я тестирую API маркетинга в Facebook, чтобы использовать его для получения данных из кампаний для настраиваемой панели мониторинга.

Я могу получить данные из рекламного аккаунта, но по некоторым неизвестным мне причинам я получаю Call to a member function getData() on a non-object при получении данных. Он выведет некоторые данные перед выходом.

Я тестирую с этим

if($_SESSION["facebook_access_token"]) {

Api::init(
'XXXXXXXXXX',
'XXXXXXXXXXXXXXXXX',
$_SESSION["facebook_access_token"]
);

$account = new AdAccount('act_XXXXXXXXXXXXX');

$campaigns = $account->getCampaigns(array(
CampaignFields::NAME,
CampaignFields::OBJECTIVE,
CampaignFields::EFFECTIVE_STATUS,
CampaignFields::CONFIGURED_STATUS
), array(
CampaignFields::EFFECTIVE_STATUS => array(
ArchivableCrudObjectEffectiveStatuses::ACTIVE
),
));

foreach($campaigns as $campaignset) {

$cid = $campaignset->getData()['id'];

$campaign = new Campaign($cid);

$insights = $campaign->getInsights(array(
InsightsFields::CAMPAIGN_NAME,
InsightsFields::ADSET_NAME
));

var_dump($insights->current()->getData());

}


}

Это выведет это

array (size=48)
'account_id' => null
'account_name' => null
'action_values' => null
'actions' => null
'actions_per_impression' => null
'ad_id' => null
'ad_name' => null
'adset_id' => null
'adset_name' => null
'call_to_action_clicks' => null
'campaign_id' => null
'campaign_name' => string 'Svendborg - Mødsparnord – kopi' (length=33)
'cost_per_action_type' => null
'cost_per_total_action' => null
'cost_per_unique_click' => null
'cost_per_inline_link_click' => null
'cost_per_inline_post_engagement' => null
'cpm' => null
'cpp' => null
'ctr' => null
'date_start' => string '2015-11-05' (length=10)
'date_stop' => string '2015-12-07' (length=10)
'frequency' => null
'impressions' => null
'inline_link_clicks' => null
'inline_post_engagement' => null
'product_id' => null
'reach' => null
'relevance_score' => null
'social_clicks' => null
'social_impressions' => null
'social_reach' => null
'spend' => null
'total_action_value' => null
'total_actions' => null
'total_unique_actions' => null
'unique_clicks' => null
'unique_ctr' => null
'unique_social_clicks' => null
'video_avg_pct_watched_actions' => null
'video_avg_sec_watched_actions' => null
'video_complete_watched_actions' => null
'video_p100_watched_actions' => null
'video_p25_watched_actions' => null
'video_p50_watched_actions' => null
'video_p75_watched_actions' => null
'video_p95_watched_actions' => null
'website_ctr' => null

и некоторые другие кампании, но они всегда будут останавливаться с вышеупомянутой ошибкой в ​​одном и том же месте каждый раз. Но я не вижу, что не так.

0

Решение

Это связано с тем, что в одной из наших кампаний нет данных по вашему запросу. Вы можете обработать это как исключение в цикле.

Тем не менее, я хочу продвигать лучшую практику для этого. В вашем случае вы действительно должны использовать параметр уровня из рекламного аккаунта, если у вас нет сотен кампаний под этим аккаунтом.

$adAccount = new AdAccount('<AD_CAMPAIGN_ID>');
$params = array(
'level' => AdsInsightsLevelValues::Campaign,
'date_preset' => InsightsPresets::LAST_7_DAYS,
);
$insights = $adAccount->getInsights(null, $params);
print_r($insights);

Таким образом, вам даже не нужен цикл for.

И у нас также есть инструмент, который поможет вам сгенерировать код в сеансе Getting Started в https://developers.facebook.com/apps/[app_id]/marketing-api/
Вы можете выбрать метрики, и мастер сгенерирует для вас рабочий код. (Пока генерируется только код Java, но шаблон кода такой же)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]