我正在开发一个网络应用程序,它允许营销人员发布活动并产生潜在客户。我想将 Facebook 线索广告平台集成到我的网络应用程序中,这样我就可以允许营销人员在两个平台上发布活动。为此,我需要来自 developers.Facebook.com 的一些资源或开发人员 API。我在那里进行了广泛的搜索,但没有成功。有人可以向我指出有关 Facebook 线索广告的特定开发人员指南吗?
1239 次
1 回答
1
您可以在您的应用程序中创建一个 Webhook,该 Webhook 在产生新线索时触发。
我采取的步骤遵循这篇文章。
只需创建一个 Facebook Webhook 可以使用的 API 端点
GET
和
POST
然后,当您的 Webhook 处于活动状态时(这就是 GET 的用途),您可以在 Facebook 发送到您的端点的 POST 中接收潜在客户信息。
一些代码为您提供上下文(使用 Express 的 Node.js):
'use strict';
var express = require('express');
var controller = require('./facebook.controller');
var router = express.Router();
router.get('/', controller.index);
router.post('/', controller.webhook);
module.exports = router;
GET 端点
// Confirm token that was set in the Webhook setup
exports.index = function (req, res) {
console.log(req.query);
var challenge = req.query['hub.challenge'],
verify_token = req.query['hub.verify_token'];
if (verify_token === 'YOUR_TOKEN') {
res.send(challenge);
}
};
POST 端点
'use strict';
var _ = require('lodash');
var fb = require('fb');
fb.setAccessToken('acces_token');
var getResponseAPI = require('getresponse-nodejs-api')('API_KEY');
exports.webhook = function(req, res) {
var leadName, leadEmail;
// Lead Info
var fbChanges = req.body.entry[0].changes;
var getLeadFromFacebook = new Promise(function(resolve, reject) {
if (fbChanges !== undefined) {
fbChanges.forEach(function(item, index) {
//You need to retrieve the User info from the changes because Facebook Just gives you UID
var getUserInfoFromGraph = new Promise(
function(resolve, reject) {
var leadId = item.value.leadgen_id;
fb.api(leadId.toString(), function(res) {
if (!res || res.error) {
console.log(!res ? 'error occurred' : res.error);
reject(res.error);
}
resolve(res);
});
}
);
getUserInfoFromGraph.then(function(userInfo) {
//To give you a picture the content of the data
console.log(JSON.stringify(userInfo.field_data));
userInfo.field_data.forEach(function(item) {
if (item.name === 'full_name') {
leadName = item.values[0];
} else if (item.name === 'email') {
leadEmail = item.values[0];
}
});
}).then(function(leadInfo) {
//Work with info here I'm using getResponse :)
getResponseAPI.addContact('CAMPAIGN_ID', leadName, leadEmail, null, 0, {}, function(response) {
if (response.data.error) {
console.log('Error' + response.data.error.message);
}
console.log(JSON.stringify(response));
});
});
});
} else {
res.status(400);
}
});
};
于 2016-03-18T00:29:47.610 回答