我目前正试图让Facebook发送所有潜在客户,因为他们已经实时注册到订阅的终端。 Facebook在他们的文档中提到,通过从新的主要广告服务设置实时更新,可以实现这一点。
https://developers.facebook.com/docs/marketing-api/guides/lead-ads/v2.5#setting-up-realtime-updates
然而,经过几个小时试图整合这个,我没能让它工作。以下是我迄今为止所遵循的流程无济于事。
我已经设置了一个Facebook应用程序(423332064458136),该应用程序目前与我的个人帐户绑定。此应用程序是实时的,但不能在任何平台上运行,因此不需要通过审核批准(据我所知)。
我已使用应用程序ID和应用程序密钥为此应用程序注册了leadgen回调。这是使用以下curl请求实现的。
curl \
-F "object=page" \
-F "callback_url=https://leadr.co.uk/external/handle-fb.php" \
-F "fields=leadgen" \
-F "verify_token=abc123" \
-F "access_token=423332064458136|<APP_SECRET>" \
"https://graph.facebook.com/v2.5/423332064458136/subscriptions"
注册后我收到{success:true}回复。为了确认这一点,使用GraphAPI资源管理器中的应用程序令牌,我在以下路径中运行了一个请求:
/ 423332064458136 /订阅
收到回复:
{
"data": [
{
"object": "page",
"callback_url": "https://leadr.co.uk/external/handle-fb.php",
"fields": [
"leadgen"
],
"active": true
}
],
}
在https://leadr.co.uk/external/handle-fb.php位置,如果需要,我会使用hub_challenge进行响应,并另外记录通过php://输入发送到文本文件的所有内容。
我已使用Facebook文档中的说明https://www.facebook.com/permalink.php?story_fbid=1009785315719107&id=140148862682761在VoucherSelector页面(https://developers.facebook.com/docs/marketing-api/guides/lead-ads/v2.5)上设置了主要广告。
由于我们不希望在此测试阶段花费任何预算,因此目前设置为无效。但是,我们知道帐户仍然可以使用给定的URL进行注册(上图)。
然后我们使用页面访问令牌将此页面订阅到我们的应用程序。使用graphAPI Explorer我已经选择了我们的应用程序,然后获得了voucherselector页面的页面访问令牌。然后我运行以下请求将页面订阅到我们的应用程序。
curl \
-F "access_token=<PAGE_ACCESS_TOKEN>" \
"https://graph.facebook.com/v2.5/140148862682761/subscribed_apps"
我收到了{success:true}回复。通过在同一端点运行GET请求,我收到如下响应:
{
"data": [
{
"category": "Business",
"link": "https://www.facebook.com/games/?app_id=423332064458136",
"name": "leadR - Lead Ads Collection",
"id": "423332064458136"
},
{
"category": "Utilities",
"link": "https://www.facebook.com/games/?app_id=2373072738",
"name": "Discussion Boards",
"id": "2373072738"
}
],
}
确认该网页已订阅我们的应用。
无论何时在此潜在客户广告上进行注册,我们的终点都不会受到任何有效负载的影响。
任何使用/ subscriptions_sample端点向我们的端点发送测试数据包的尝试都会失败并出现以下错误(意味着我们仅限于能够使用真实账户进行测试):
{&#34;错误&#34;:{&#34;消息&#34;:&#34;(#3)应用必须在白名单上&#34;,&#34;输入&#34;:& #34; OAuthException&#34;&#34;代码&#34;:3,&#34; fbtrace_id&#34;:&#34; HH5gInxafKP&#34;}}
有点坚持如何从这里开始。是否有任何人将此引导广告发送到订阅的终端是否有任何成功?
答案 0 :(得分:2)
我已经使用Facebook在video中完成的PHP方法成功获得了Facebook端点广告的实时更新。
假设您的文件位于测试服务器或实时服务器上,您将需要三件事。
1 - 正确设置Facebook应用程序。看看上面的内容,您似乎正确设置了回调网址和应用。只需确保该应用具有正确的回调网址,这些字段适用于&#39; leadgen&#39;在webhook设置中。此外,我们遇到了访问侦听器的应用程序的问题,除非它位于https域上(请确保您拥有有效的SSL证书),并且您还希望在任何保护服务(如Cloud Flare或其他防火墙)中授予应用程序域权限所以它不会被阻止打击听众。
2 - 您的回调网址上的PHP侦听器。以下是我们如何设置PHP,我不会在上面看到您的代码,所以我会在这里发布,因为它可能会有所不同:
<?php
$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];
if ($verify_token == 'abc123') {echo $challenge;}
//you can output the below to your error log and tail -f it to see them
//feed in live, once you see them hit your error log you know your
//listener works, then you can change the below code to handle the
//array and grab the leadgen ID for a further GET request of that real-time entry;
$input = json_decode(file_get_contents('php://input'), true);
error_log(print_r($input, true)); ?>
3 - CRM中用于订阅页面的某种平台页面。这就是我们在下面使用的内容,它非常基础,但它可以作为更全面的应用程序集成到CRM的良好起点:
<h2>Lead Gen Platform</h2>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'USEYOUROWNAPPID',
xfbml : true,
version : 'v2.5'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function subscribeApp(page_id, page_access_token) {
console.log('Subscribed Page to FB Leads Live Update ' + page_id);
FB.api('/' + page_id + '/subscribed_apps',
'post',
{access_token: page_access_token},
function(response)
{console.log('Successfully subscribed page', response);
});
}
function checkLoginState() {
FB.getLoginStatus(function(response) {
console.log('statusChangeCallback');
console.log(response);
console.log('successfully logged in', response);
});
FB.login(function(response) {
if (response.status == 'connected') {
// Logged into your app and Facebook.
FB.api ('me/accounts', function(response) {
console.log('successfully retrieved pages', response);
var pages = response.data;
var ul = document.getElementById('list');
for (i = 0, len = pages.length; i < len; i++)
{
var page = pages[i];
var li = document.createElement('li');
var a = document.createElement('a');
a.href = "#";
a.onclick = subscribeApp.bind(this, page.id, page.access_token);
li.appendChild(a);
a.innerHTML = page.name;
ul.appendChild(li);
}
});
} else if (response.status == 'not_authorized') {
// The person is logged into Facebook, but not your app.
} else {
// The person is not logged into Facebook, so we're not sure if
// they are logged into this app or not.
}
}, {scope: 'public_profile,manage_pages'});
}
</script>
<fb:login-button scope="public_profile,manage_pages" onlogin="checkLoginState();">
</fb:login-button>
<ul id="list"></ul>
使用上述内容,我们成功地让我们的Facebook主导广告开始在回调网址上听到我们的听众,从而允许我们实时处理数据。希望这有助于你的问题!