Sno*_*all 0 facebook-graph-api facebook-ads-api facebook-php-sdk
我已成功设置webhook以指向我的回调URL,它会收到以下示例数据:
Array
(
[object] => page
[entry] => Array
(
[0] => Array
(
[id] => 297269987142139
[time] => 1454876106
[changes] => Array
(
[0] => Array
(
[field] => leadgen
[value] => Array
(
[ad_id] => 410908499427
[adgroup_id] => 238113717077
[created_time] => 1454847306
[form_id] => 577581087825
[leadgen_id] => 441393665441
[page_id] => 297269987142139
)
)
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试检索与相关的数据leadgen_id作为被Facebook解释说,这是行不通的:
use FacebookAds\Object\Lead;
$form = new Lead('441393665441');
$form->read();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误: Unsupported get request. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api
我已经尝试了一切,但无法弄清楚为什么它不起作用.
我发送这样的测试线索:
curl \
-F "object_id=<PAGE_ID>" \
-F "object=page" \
-F "field=leadgen" \
-F "access_token=<ACCESS_TOKEN>" \
-F 'custom_fields={"page_id": <PAGE_ID>}' \
"https://graph.facebook.com/<API_VERSION>/<APP_ID>/subscriptions_sample"
Run Code Online (Sandbox Code Playgroud)
小智 10
我也努力让这个工作,似乎没有人制作任何似乎有效的复制和粘贴解决方案.
这个PHP函数适合我:
function getLead($leadgen_id,$user_access_token) {
//fetch lead info from FB API
$graph_url= 'https://graph.facebook.com/v2.5/'.$leadgen_id."?access_token=".$user_access_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $graph_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
curl_close($ch);
//work with the lead data
$leaddata = json_decode($output);
$lead = [];
for($i=0;$i<count($leaddata->field_data);$i++) {
$lead[$leaddata->field_data[$i]->name]=$leaddata->field_data[$i]->values[0];
}
return $lead;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用此示例代码的函数:
//Take input from Facebook webhook request
$input = json_decode(file_get_contents('php://input'),true);
$leadgen_id = $input["entry"][0]["changes"][0]["value"]["leadgen_id"];
//Token - you must generate this in the FB API Explorer - tip: exchange it to a long-lived (valid 60 days) token
$user_access_token = 'TOKENID';
//Get the lead info
$lead = getLead($leadgen_id,$user_access_token);//get lead info
Run Code Online (Sandbox Code Playgroud)
从这里开始,您可以通过获取前导中的属性和值来发送实时邮件:
//Create an email with the lead info
$mail="<html><body><h2>New lead</h2><blockquote>";
$mail.="Lead id: ".$leadgen_id."<br>";
foreach($lead as $attr=>$val) {
$mail.=$attr.": ".$val."<br>";
}
$mail.="</blockquote></body></html>";
Run Code Online (Sandbox Code Playgroud)
我希望这有帮助.请注意,subscriptions_sample引导不包含任何字段.您可以使用自己的Facebook个人资料进行测试,以获取真实数据.
| 归档时间: |
|
| 查看次数: |
7195 次 |
| 最近记录: |