簡體   English   中英

如何在facebook ads api中訪問Facebook的受保護財產響應

[英]how to access protected property response from facebook in facebook ads api

我從API廣告的API調用返回一個受保護的對象。

 $page = new Page($page_id);
 $leadgen_forms = $page->getLeadgenForms();

我收到這樣的回復:

    FacebookAds\Object\Page
          (
      [response:protected] => FacebookAds\Http\Response Object
         (
            [response:protected] => Array
              (
                   [data] => Array
                        (
                             MY DATA
                        )
              )
    )
  )

我已經使用過反射

 $reflect=new \ReflectionClass($leadgen_forms);
 $properties=$reflect->getProperties('content');

PtcHandyMan

require_once('PtcHm.php');
 PtcHandyMan::register();
 $data = PtcHandyMan::getProperty( $leadgen_forms , 'content' );

但我無法訪問受保護的財產。 有沒有辦法訪問受保護的財產。 而且我也不明白為什么facebook會提供受保護的回復。

這是我的全部功能

  function get_page_forms(){
        if (!$this->input->is_ajax_request()) {
            exit('No direct script access allowed');
        }
        $page_id = $_POST['page_id'];
        $page_access_token = $_POST['page_access_token'];
        Api::init('APPID', 'SECRET KEY', $page_access_token);
        $page = new Page($page_id);
        $leadgen_forms = $page->getLeadgenForms();
        //$reflect=new \ReflectionClass($leadgen_forms);
        //$properties=$reflect->getProperties('content');
        require_once('PtcHm.php');
        PtcHandyMan::register();
        $data = PtcHandyMan::getProperty( $leadgen_forms , 'content' );
        $allFormsArr = $data['data'];           
        $count = count($allFormsArr);
        $output = '<div class="container">
                    <table class="table table-responsive table-hover">
                        <thead>
                            <tr>
                                <td>Id</td>
                                <td>Name</td>
                                <td>Leads csv file</td>
                                <td>Status</td>
                            </tr>
                        </thead>
                        <tbody>';
            for($i=0; $i<$count; $i++){
                $output .= '<tr>
                                <td>'.$allFormsArr[$i]['id'].'</td>
                                <td>'.$allFormsArr[$i]['name'].'</td>
                                <td><a href="'.$allFormsArr[$i]['leadgen_export_csv_url'].'" target="_new">Link</a></td>
                                <td>'.$allFormsArr[$i]['status'].'</td>
                            </tr>';
            }
           $output .= '</tbody>
                    </table>
                </div>';
        echo $output;
    }

嘗試對getContent屬性使用getter方法。 這可能會讓您訪問受保護的屬性。

有很多方法可以從facebook API訪問響應。

你的代碼:

$page = new Page($page_id);
$leadgen_forms = $page->getLeadgenForms();

你得到這樣的回應:

FacebookAds\Object\Page
  (
    [response:protected] => FacebookAds\Http\Response Object
       (
        [response:protected] => Array
          (
            [data] => Array
              (MY DATA)
          )
      )
  )

您可以使用asArray方法

$page = new Page($page_id);
$leadgen_forms = $page->getLeadgenForms()->asArray();

https://developers.facebook.com/docs/php/GraphNode/5.0.0

或者如果你不想使用asArray,可以使用簡單的foreach來獲得更深層次:

foreach ($leadgen_forms as $leadgen_form) {
  heres your array. It may be protected so you might want to dig deeper with another foreach and so on
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM