Facebook Marketing API и доступ к Ads Insight

Я создаю небольшую программу, которая работает с различными API для автоматизации служб отчетности, которые мы предлагаем некоторым клиентам.

Одна из вещей, о которых мы сообщаем, — это эффективность рекламы в Facebook.

Я создавал эту программу, используя Facebook Marketing API и Ads Insight APi https://developers.facebook.com/docs/marketing-apis

Я прошел весь процесс настройки приложения Facebook и получения соответствующих токенов приложения.

Тем не менее, я столкнулся с проблемой, поскольку доступ для разработки позволяет использовать только 5 рекламных аккаунтов.

Чтобы подать заявку на базовый доступ, маркетинговый API запрашивает платформу разработки и целую кучу других вещей, которые не имеют отношения к моей программе. Я не создаю «приложение», предназначенное для публичного выпуска в традиционном смысле; скорее, я просто хочу интегрироваться с этими API на базовом уровне, чтобы автоматизировать некоторые внутренние задачи.

Мне кажется ошеломляющим, что я не смогу сделать что-то подобное, но это то, что, похоже, предлагает документация Facebook.

Если кто-то еще знаком с такой проблемой, я хотел бы знать, есть ли обходной путь.


person derks    schedule 26.06.2017    source источник


Ответы (2)


Отправьте свое приложение на проверку, чтобы получить более 10 рекламных аккаунтов. Используйте «Платформу» Веб-сайта. Выберите родное или настольное приложение; секрет приложения НЕ встроен в клиент. Остальное можно в основном игнорировать, но вам нужно будет включить несколько снимков экрана вашего приложения и описание того, как оно работает и что оно делает. Реальный человек рассмотрит его, и вы можете получить помощь в группе разработчиков Facebook здесь: https://www.facebook.com/groups/fbdevelopers

Вы получите только зачет/незачет... без комментариев. Не удивляйтесь, если они отвергнут его с первого раза. Не отправляйте повторно и не надейтесь на лучший ответ во второй раз — в конечном итоге вас заблокируют на несколько дней. Разместите вопрос помощи в группе.

person Mike Sullivan    schedule 29.06.2017
comment
Могу ли я просто включить скриншоты кода? «Приложение» даже не имеет специального графического интерфейса; это просто скрипт Python, который я запускаю. Если они отвергнут меня в первый раз, мне просто не повезло? - person derks; 29.06.2017
comment
Опишите приложение, что оно делает и что выдает ваш скрипт — CSV-файлы? Покажите небольшой образец. Чем больше вы расскажете им о том, как он раскрывает данные FB, тем больше вероятность, что они это одобрят. В частности, сообщите им, записывает ли он какие-либо конечные точки, а также что вы делаете для предотвращения ограничения скорости и обработки ошибок. Они должны быть удобными, вы будете хорошим пользователем API. - person Mike Sullivan; 30.06.2017

Derks, в настоящее время я создаю панель инструментов с более чем 40 клиентами, и я могу отображать каждого из них, их данные и т. д. с базовым уровнем разработки. У меня есть код, если вы хотите взглянуть, единственное, что я пытаюсь сделать сейчас, это создать средство выбора диапазона дат, но вы более чем рады, чтобы взглянуть на то, что у меня есть, просто чтобы получить общее представление.

Вот объекты Use из Facebook

<?php

        require_once __DIR__ . '/vendor/autoload.php';
        use FacebookAds\Api;
        use FacebookAds\Object\AdUser;
        use Facebook\Facebook;
        use Facebook\Exceptions\FacebookResponseException;
        use Facebook\Exceptions\FacebookSDKException;
        use FacebookAds\Object\Campaign;
        use FacebookAds\Object\Fields\AdsInsightsFields;
        use FacebookAds\Object\Ad;
        use FacebookAds\Object\Fields\AdSetFields;
        use FacebookAds\Object\AdCampaign;
        use FacebookAds\Object\Fields\AdFields;
        use FacebookAds\Object\Fields;
        use FacebookAds\Object\Fields\AdImageFields;
        use FacebookAds\Object\AdAccount;
        use FacebookAds\Object\AdSet;
        use FacebookAds\Object\AdCreative;
        use FacebookAds\Object\Fields\AdCreativeFields;
        use FacebookAds\Object\Fields\AdCreativePhotoDataFields;
        use FacebookAds\Object\AdCreativeLinkData;
        use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
        use FacebookAds\Object\Fields\CampaignFields;
        use FacebookAds\Object\Page;
        use FacebookAds\Object\Fields\AdPreviewFields;
        use FacebookAds\Object\Values\AdPreviewAdFormatValues;
        use FacebookAds\Object\AdVideo;
        ?>

Here is the general code I am trying

<?php
        // Init PHP Sessions
        session_start();

        $fb = new Facebook([
          'app_id' => 'xxxxxxxxx',
          'app_secret' => 'xxxxxxxxxxx',
        ]);

        $helper = $fb->getRedirectLoginHelper();

        if (!isset($_SESSION['enter api key here'])) {
          $_SESSION['enter api key here'] = null;
        }

        if (!$_SESSION['enter api key here']) {
          $helper = $fb->getRedirectLoginHelper();
          try {
            $_SESSION['enter api key here'] = (string) $helper->getAccessToken();
          } catch(FacebookResponseException $e) {
            // When Graph returns an error
            echo 'Graph returned an error: ' . $e->getMessage();
            exit;
          } catch(FacebookSDKException $e) {
            // When validation fails or other local issues
            echo 'Facebook SDK returned an error: ' . $e->getMessage();
            exit;
          }
        }

        if ($_SESSION['enter api key here']) {
          //echo "You are logged in!";

        // Initialize a new Session and instantiate an API object
        Api::init(
          'xxxxxxxxx', // App ID
          'xxxxxxxxx', //app_secret
          $_SESSION['enter api key here'] // Your user access token
        );

    ?>
<div id="fbdata"></div> <?php

    $account = new AdAccount('act_xxxxxxxxxx');


        $params = array(

        'date_preset'=> 'last_28d',


            'thumbnail_width' => 200,
            'thumbnail_height' => 150,
            'level' => 'campaign',
            'limit' => '15'

        );

$fields = array(
  AdsInsightsFields::CAMPAIGN_NAME,
  AdsInsightsFields::CAMPAIGN_ID,
  AdsInsightsFields::IMPRESSIONS,
  AdsInsightsFields::CLICKS,
  AdsInsightsFields::REACH,
  AdsInsightsFields::SPEND,
  AdsInsightsFields::CPM,
  AdsInsightsFields::CPC,
  AdsInsightsFields::ACTIONS, 
);

$field = array(
  AdCreativeFields::TITLE,
  AdCreativeFields::THUMBNAIL_URL,
  AdCreativeFields::BODY,
  );

            $params1 = array(
          'time_range' => array(
            'since' => (new \DateTime($beginDate))->format('Y-m-d'),
            'until' => (new \DateTime($lastDate))->format('Y-m-d'),
          ),
            'thumbnail_width' => 200,
            'thumbnail_height' => 150,
            'level' => 'ad',
            'limit' => '5'
        );      

$adcreatives = $account->getAdCreatives($field, $params1);
?>      
        <table class="fbtable">
            <tr>
                <th>Title</th>
                <th>Ad Image</th>
                <th>Ad Body</th>
            </tr>
            <?php
foreach($adcreatives as $t2){

        echo"<tr>
        <td>$t2->title</td>
      <td><img src='$t2->thumbnail_url'/></td>
      <td>$t2->body</td>
    </tr>";
}

        $insights = $account->getInsights($fields, $params);?>

        <table class="fbtable">
            <tr>
                <th>Campaign ID</th>
                <th>Campaign Name</th>
                <th>Impressions</th>
                <th>Clicks</th>
                <th>Reach</th>
                <th>Spend</th>
                <th>Total Actions</th>
                <th>CPM</th>
                <th>CPC</th>
            </tr>

            <?php

foreach($insights as $i) {
    $impress = number_format((float)$i->impressions);
    $reach = number_format((float)$i->reach);
    $totalAction = number_format((float)$i->actions);
    $cpc = number_format($i->cpc, 2, '.', '');
    $cpm = number_format($i->cpm, 2, '.', '');
    echo"<tr class='fbtable'>
      <td>$i->campaign_id</td>
      <td>$i->campaign_name</td>
      <td>$impress</td>
      <td>$i->clicks</td>
      <td>$reach</td>
      <td>$$i->spend</td>
      <td>$totalAction</td>
      <td>$$cpm</td>
      <td>$$cpc</td>
    </tr>";
}
        }else {
          $permissions = ['ads_management'];
          $loginUrl = $helper->getLoginUrl('http://where you want login to be.com', $permissions);
          echo '<a href="' . $loginUrl . '">Log in with Facebook</a>';
        } 


?>

Я помогу, чем смогу, @Derks, и я считаю, что единственное, что вам может понадобиться, это выяснить, как программа или что-то еще, что знает ваше здание, кто есть кто.

person Jonathan Vasiliou    schedule 27.06.2017
comment
Да, пожалуйста. Мне было бы интересно увидеть этот код! - person derks; 29.06.2017
comment
Если кто-нибудь может помочь с выбором диапазона дат, это тоже было бы здорово. Просто спросите у @Derks, нужна ли вам помощь, и я буду рад помочь. Я надеюсь, что этот код даст вам какой-то ответ в самом правильном направлении. - person Jonathan Vasiliou; 29.06.2017