我需要了解FB Webhooks
的工作原理。
我按照指南为新Webhook
设置了Facebook Messenger
,所有内容都像魅力一样:
我创建了一个GET
端点,以便第一次接收API:
router.get('/fb_cb', function(req, res, next) {
if (req.query['hub.verify_token'] === 'my_token') {
res.send(req.query['hub.challenge']);
console.log('fb GET!');
} else {
res.send('Error, wrong validation token');
}
});
在我的Fb窗格中,我第一次到达此端点,设置页面,让Page Access Token
结束设置端点以接收回调:
router.post('/fb_cb', function(req, res, next) {
console.log('hook');
messaging_events = req.body.entry[0].messaging;
for (i = 0; i < messaging_events.length; i++) {
event = req.body.entry[0].messaging[i];
sender = event.sender;
if (event.message && event.message.text) {
console.log(event.sender.id);
}
}
res.sendStatus(200);
});
一切都没问题,我可以和我的页面聊聊:D
现在我正在尝试为接收用户更新做同样的事情,所以我在Facebook Webhooks
中配置了端点,并且没有问题就达到GET
端点。
但是,当我执行任何操作(例如发布内容,更改个人状态等)时,我的用户都没有收到任何通知。
这是Graph API检索到的订阅的当前状态:
data: [{
object: "user",
callback_url: "https://myapp.com/fb_cb",
fields: ["about", "about_me", "current_location", "likes", "photos", "pic", "picture", "status", "statuses", "work"],
active: true
}, {
object: "page",
callback_url: "https://myapp.com/fb_messenger_cb",
fields: ["message_deliveries", "messages", "messaging_optins", "messaging_postbacks"],
active: true
}, {
object: "application",
callback_url: "https://myapp.com/fb_app_cb",
fields: ["async_requests"],
active: true
}]
有一种方法可以达到这个效果吗?怎么了?