【问题标题】:How to get Facebook post ID from an ad using API?如何使用 API 从广告中获取 Facebook 帖子 ID?
【发布时间】:2017-07-01 06:19:16
【问题描述】:

我对自己构建的 Facebook 广告报告工具非常满意。

它列出了广告帐户中的所有广告系列,以及每个广告系列中的所有广告集,以及每个广告集中的所有广告。

它显示了我关心的指标。

但我一直无法弄清楚如何从广告中检索帖子 ID。

似乎Insights 边缘中没有提到该字段(在InsightsFields 中不可用),所以也许我必须在另一个 API 调用上进行“加入”。

我检索见解的主要代码是:

public function getInsights($levelType, $id, $aggLevel, $start, $end) {
    if ($levelType) {
        if ($id == null) {
            abort(500, 'You must provide the ID for the object you want to retrieve.');
        }
    } else {
        $levelType = \AdAccount::class;
        $id = ACT_PREPEND . $this->fbConfig['account_id'];
        $aggLevel = AdsInsightsLevelValues::CAMPAIGN;
    }
    $variableClassWithNamespace = '\FacebookAds\Object\\' . $levelType;
    $level = new $variableClassWithNamespace($id);
    $fields = [
        InsightsFields::CAMPAIGN_ID,
        InsightsFields::CAMPAIGN_NAME,
        InsightsFields::ADSET_ID,
        InsightsFields::ADSET_NAME,
        InsightsFields::AD_ID,
        InsightsFields::AD_NAME,
        InsightsFields::SPEND,
        InsightsFields::UNIQUE_IMPRESSIONS,
        InsightsFields::INLINE_LINK_CLICKS,
        InsightsFields::INLINE_LINK_CLICK_CTR,
        InsightsFields::COST_PER_INLINE_LINK_CLICK,
        InsightsFields::ACTIONS,
        InsightsFields::COST_PER_ACTION_TYPE,
        InsightsFields::CPM,
    ];
    $params = [
        AdReportRunFields::LEVEL => $aggLevel,
    ];
    if ($start) {
        $params[AdReportRunFields::TIME_RANGE]['since'] = $start;
        if (!$end) {
            $params[AdReportRunFields::TIME_RANGE]['until'] = (new \DateTime("+2 year"))->format('Y-m-d');
        }
    }
    if ($end) {
        $params[AdReportRunFields::TIME_RANGE]['until'] = $end;
        if (!$start) {
            $params[AdReportRunFields::TIME_RANGE]['since'] = (new \DateTime("-1 year"))->format('Y-m-d');
        }
    }
    if (!$start && !$end) {
        $params[AdReportRunFields::DATE_PRESET] = InsightsPresets::LIFETIME;
    }
    $insights = $level->getInsights($fields, $params);
    return $insights->getResponse()->getBody();
}

所以,至少,我很乐意回答这个简单的问题:假设我拥有所有必需的 API 权限(我当然拥有),给定一个广告 ID,我该如何检索该广告中出现的“帖子”的 ID?

理想情况下,我想回答的是:我如何在一个 API 查询中检索该帖子 ID,因为我正在检索我想要的所有见解(如上所示)?

谢谢!

【问题讨论】:

    标签: facebook facebook-graph-api facebook-ads-api


    【解决方案1】:

    问题是帖子 ID 是一个基本的广告参数,而不是您从洞察中获得的每日价值。这就是为什么在洞察端点的任何地方都找不到它的原因。

    假设您知道所有广告 ID,您可以一次查询它们(单个请求中的数量可能存在一些未记录的限制),如下所示:

    /v2.8/?ids=6068303632680,6074066638080&fields=creative{effective_object_story_id}
    

    这实际上是执行这两个查询的快捷方式

    /v2.8/6068303632680?fields=creative{effective_object_story_id}
    /v2.8/6074066638080?fields=creative{effective_object_story_id}
    

    您可以在多 ID 读取请求部分

    中找到更多关于高级 API 使用 here in FB docs

    【讨论】:

    【解决方案2】:

    如果您想将 Facebook 广告 ID 链接到 Facebook 视频 ID,您可以使用类似的查询。

     /v2.9/6087224935451?fields=creative{ name, title, video_id, status }
    

    结果:

    {
       "creative": {
       "name": "Ad from a Page post 24",
       "video_id": "745639641594227",
       "status": "ACTIVE",
       "id": "6087045300251"
       },
       "id": "6087224935451"
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2022-09-26
      相关资源
      最近更新 更多