Facebook向webhook发送空帖子
我正在尝试通过facebook应用程序为我的页面安装leadgen事件的webhook。因此,我:Facebook向webhook发送空帖子,facebook,webhooks,Facebook,Webhooks,我正在尝试通过facebook应用程序为我的页面安装leadgen事件的webhook。因此,我: Facebook的潜在客户来源页面 Facebook应用程序 我要在其中保存潜在客户的Web服务器 我相信应用程序和Web服务器连接得很好。Webhook显示在应用程序页面等处,但当我尝试使用此工具创建测试线索时,我收到一个POST请求,其中没有数据 我怀疑权限有问题,但我可以直接用PHP SDK检查页面上的潜在客户(通过leadgen_id),POST请求只是通过URL从Facebook发送的,
UPD将请求发送到同一url(
curl-d“param=value”)https://..url..
)按预期工作。Facebook在请求正文中发送Lead数据。如果您使用的是框架,请检查您是否有权访问请求正文。
尝试使用第三方中间服务(如Runscope)查看完整请求,这非常有用,如果Facebook将webhook数据发送为
内容类型:application/json
,而不是…:application/x-www-form-urlencoded
(作为带有method=post的普通表单)
因此,PHP不会填充$u POST–您需要读取原始输入流。可以使用
file\u get\u contents('php://input)
–然后对该数据应用json\u decode
,您将有一个合适的数据结构来处理。这段代码适合我
if (!empty($_REQUEST['hub_mode']) && $_REQUEST['hub_mode'] == 'subscribe' && $_REQUEST['hub_verify_token'] == "<mytoken>") {
echo $_REQUEST['hub_challenge'];
} else {
$data = json_decode(file_get_contents("php://input"), true);
file_put_contents('logFB.txt', print_r($data, true));
}
if(!empty($\u请求['hub\u模式]])&&$\u请求['hub\u模式]=='subscribe'&&$\u请求['hub\u验证\u令牌]==“”){
echo$_请求['hub_挑战];
}否则{
$data=json\u解码(文件\u获取\u内容(“php://input"(对),;
文件内容('logFB.txt',打印($data,true));
}
第一部分用于验证webhook,第二部分用于从facebook webhook获取数据
希望这将有助于…如果您正在使用django框架,您应该请求.body,因为post数据将保持为空
def webhook_response(request):
# it will print the contents from facebook webhook response
print(request.body)
# something like the following object will print up if you are using leadgen
{"object": "page", "entry": [{"id": "0", "time": 111111111, "changes": [{"field": "leadgen", "value": {"ad_id": "444444444", "form_id": "444444444444", "leadgen_id": "444444444444", "created_time": 11111111, "page_id": "444444444444", "adgroup_id": "44444444444"}}]}]}
好吧,我明白你在说什么了。它将作为序列化字符串发送,而不是作为一组参数发送。非常感谢。