Php 如何在facebook广告api中从facebook访问受保护的属性响应
我得到一个从Facebook广告API调用返回的受保护对象Php 如何在facebook广告api中从facebook访问受保护的属性响应,php,facebook,facebook-graph-api,codeigniter-3,facebook-ads-api,Php,Facebook,Facebook Graph Api,Codeigniter 3,Facebook Ads Api,我得到一个从Facebook广告API调用返回的受保护对象 $page = new Page($page_id); $leadgen_forms = $page->getLeadgenForms(); 我得到的回应如下: FacebookAds\Object\Page ( [response:protected] => FacebookAds\Http\Response Object ( [res
$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
)
)
)
)
FacebookAds\Object\Page
(
[response:protected] => FacebookAds\Http\Response Object
(
[response:protected] => Array
(
[data] => Array
(MY DATA)
)
)
)
我已经用过课堂了
及
但我无法访问受保护的财产。是否有办法访问受保护的财产。而且我也不明白为什么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;
}
函数get\u page\u forms(){
如果(!$this->input->is\u ajax\u request()){
退出(“不允许直接脚本访问”);
}
$page\u id=$\u POST['page\u id'];
$page\u access\u token=$\u POST['page\u access\u token'];
Api::init('APPID','SECRET KEY',$page\u access\u token);
$page=新页面($page\u id);
$leadgen_forms=$page->getLeadgenForms();
//$reflect=new\ReflectionClass($leadgen\u表单);
//$properties=$reflect->getProperties('content');
一次需要_('PtcHm.php');
PtcHandyMan::register();
$data=PtcHandyMan::getProperty($leadgen_forms,'content');
$ALLFORMSAR=$data['data'];
$count=count($allFormsArr);
$output=
身份证件
名称
线索csv文件
地位
';
对于($i=0;$i请尝试对属性使用getter方法,如
getContent
。这样可以访问受保护的属性。有很多方法可以访问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
)
)
)
)
FacebookAds\Object\Page
(
[response:protected] => FacebookAds\Http\Response Object
(
[response:protected] => Array
(
[data] => Array
(MY DATA)
)
)
)
你可以使用数组方法
$page = new Page($page_id);
$leadgen_forms = $page->getLeadgenForms()->asArray();
或者,如果您不想使用asArray,请使用simple 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
}
根据,您应该返回一个简单的数据结构。为什么它会说
FacebookAds\Object\Page
–您确定这是方法返回值,而不仅仅是$Page
您在那里转储的内容…?忽略FacebookAds\Object\Page
…我的重点是如何访问受保护的数据。在文档中它显示了simp但是它并不简单,正如我在问题中所展示的那样,它是受保护的。var_dump($leadgen_forms);
会产生什么结果?这些对象不是有toArray之类的方法吗?@CBroe你是对的。有一种类似toArray的方法。至少是这样的。它是asArray。