将日期参数传递给Facebook批处理请求


Pass in date params to Facebook batch request

我想将日期参数传递到PHP SDK批处理请求方法中。

是否可以传入日期参数,例如:

$params = array(
  'time_range' => array(
    'since' => (new 'DateTime("-1 week"))->format('Y-m-d'),
    'until' => (new 'DateTime())->format('Y-m-d'),
  ),
);

我的批量请求本质上是:

foreach( $campaign_ids as $campaign_id ) {  
    $batch[] = $fb->request('GET/', env("FB_APP_VERSION") . '/' . $campaign_id . '/insights?fields=impressions,unique_clicks,reach');    
}
    try {
      $responses = $fb->sendBatchRequest($batch);
    } catch(Facebook'Exceptions'FacebookResponseException $e) {
      // When Graph returns an error
      echo 'Graph returned an error: ' . $e->getMessage();
      exit;
    } catch(Facebook'Exceptions'FacebookSDKException $e) {
      // When validation fails or other local issues
      echo 'Facebook SDK returned an error: ' . $e->getMessage();
      exit;
    }

根据

  • https://developers.facebook.com/docs/marketing-api/insights/v2.5#dates-和时间

我想你可以为每个请求添加一个额外的参数,如下所示:

格式:time_range={'since':'2015-01-01','until':'2015-01-20'}

在PHP中,这意味着您必须对$params数组进行json_encode,并将其添加到每个请求中。

$time_range = array(
    'since' => (new 'DateTime("-1 week"))->format('Y-m-d'),
    'until' => (new 'DateTime())->format('Y-m-d'),
)
$fb->request('GET/', env("FB_APP_VERSION") . '/' . $campaign_id . '/insights?fields=impressions,unique_clicks,reach&time_range=' . json_encode($time_range));

在阅读源代码后,我发现您可以在params中传递日期,如下所示:(传递给请求处理程序时会得到url_encoded)

foreach( $campaigns as $campaign ) {  
        $params = array(
          'time_range' => array(
            'since' => (new 'DateTime($campaign->data_date . ' -1 day'))->format('Y-m-d'),
            'until' => (new 'DateTime($campaign->data_date))->format('Y-m-d')
          ),
        );
        $batch[] = $fb->request('GET', '/' . $campaign->ad_campaign_id . '/insights?fields=impressions,unique_clicks,reach', $params);
    }