使用Facebook Marketing API的日期范围选择器

时间:2017-06-22 14:05:14

标签: php facebook facebook-php-sdk date-range facebook-marketing-api

我开始认为这不可能。我目前拥有Facebook营销API,并且当我放置一段时间(例如从今天起减去1个月)时,一切都运行良好。但是,我希望有一个引导日期范围选择器来为我的客户选择时间范围。因此,$ params变量是我正在尝试使用的time_range。

或者即使是不同的东西我也可以做任何有用的事情都会很棒。

我需要的只是API获取日期并将其用于Facebook的见解。我正在使用ajax调用发送_POST startDate和endDate来存储到他们自己的变量$ startDate / $ endDate中,当我尝试代码时,没有任何东西得到回应。下面是AJAX调用,因为我已经在Web应用程序的其他部分使用了它。第二部分代码是Marketing API代码。

AJAX CALL FILE。

        $(document).ready(function() {
                $('#config-demo').click(function() {
                  $(this).parent().find('#demo').click();
                });
                updateConfig();

                function updateConfig() {
                  var options = {

                       "showDropdowns": true,

                  };
                  options.opens = "center";



                options.ranges = {
                      'Today': [moment(), moment()],
                      'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                      'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                      'Last 14 Days': [moment().subtract(13, 'days'), moment()],
                      'Last 28 Days': [moment().subtract(27, 'days'), moment()],
                      'This Month': [moment().startOf('month'), moment().endOf('month')],
                      'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
                };

                  $('#config-demo').daterangepicker(options, function(start, end, label) { 
                        var startDate = start.format('YYYY-MM-DD'); 
                        var endDate = end.format('YYYY-MM-DD');
                        passDate(startDate, endDate);

                   });
                }
        });

        function passDate(startDate,endDate) {
            $('.loader').show();
            $.ajax({
                    method: 'POST', // define the type of HTTP verb we want to use
                    url: 'fb_daterange.php', // the url where we want to POST
                    dataType: 'json', // Our data object
                    data: {startDate: startDate, endDate: endDate} // Ensure we pass the start and end dates to $_POST in PHP
                })

                // using the done promise callback
                .done(function(data) {
                    console.log('done callback - data: ',data);
                    $('.loader').hide();
                    alert('yoyoyo');
                    $('#fbdata').text(data.message1); // log data to the console so we can see
                });
        }

营销API文件,其中AJAX的日期为......

<?php 

if((!empty($_POST['startDate'])&&(!empty($_POST['endDate'])))) {    // Check whether the date is empty


    //setup variables for start and end date..
    $startDate = date('Y-m-d', strtotime($_POST['startDate']));
    $endDate = date('Y-m-d', strtotime($_POST['endDate']));

$account = new AdAccount('act_xxxxxxxxxxxx');


        $params = array(
          'time_range' => ("{'since': '".$startDate."', 'until': '".$endDate."'}"),

          'level' => 'ad',
          'limit' => '20',
        );

$fields = array(
  AdsInsightsFields::CAMPAIGN_NAME,
  AdsInsightsFields::CAMPAIGN_ID,
  AdsInsightsFields::IMPRESSIONS,
  AdsInsightsFields::UNIQUE_CLICKS,
  AdsInsightsFields::REACH,
  AdsInsightsFields::SPEND,
  AdsInsightsFields::TOTAL_ACTIONS,
);

$insights = $account->getInsights($fields, $params);
foreach($insights as $i) {
    $impress = number_format((float)$i->impressions);
    $reach = number_format((float)$i->reach);
    $totalAction = number_format((float)$i->total_actions);
    $i->campaign_id;
    $i->campaign_name;
    $impress;
    $i->unique_clicks;
    $reach;
    $i->spend;
    $totalAction;
}       
$return['message1'] = $startDate;
echo $startDate;

            header('Content-Type: text/json');              
            echo json_encode($return); //echo response back to Home page... 
}   
 ?>

我坚持的部分是我认为带有time_range的$ params,因为当我评论所有营销api代码并使用其他东西发送时,如$ t =“hello”;并在其发送信息的网络应用程序上使用日期范围选择器。

0 个答案:

没有答案