首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用facebook marketing api调用成员函数getData()

使用facebook marketing api调用成员函数getData()
EN

Stack Overflow用户
提问于 2015-12-07 21:41:45
回答 1查看 217关注 0票数 0

我目前正在测试facebook营销API,以便使用它从自定义仪表板的活动中获取数据。

我可以从广告账户中获取数据,但对于某些人,对我来说,未知的原因是在获取数据时获取Call to a member function getData() on a non-object。它将在退出前输出一些数据。

我正在用这个进行测试

代码语言:javascript
复制
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());

    }


}

它将输出以下内容

代码语言:javascript
复制
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

和其他一些活动,但每次都会在相同的位置停止上述错误。但我看不出出了什么问题。

EN

回答 1

Stack Overflow用户

发布于 2017-05-18 02:08:37

这是因为我们的一个活动没有关于您的查询的洞察数据。您可以在循环中将其作为异常处理。

然而,我想为此推广一种最佳实践。在您的用例中,您应该真正使用来自广告帐户的level参数,除非您在该帐户下有数百个活动。

代码语言:javascript
复制
$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循环。

我们还有一个工具可以指导你在https://developers.facebook.com/apps/[app_id]/marketing-api/的入门会话中生成代码,基本上你可以选择指标,向导将为你生成一个工作代码。(它现在只生成Java代码,但代码模式是相同的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34134999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档