首先,在Facebook实时更新上发布另一个问题道歉。我已经阅读了许多现有的stackoverflow答案和有用的文章,但我仍然无法弄清楚如何将所有内容放在一起。
所有我想要做的就是在用户或页面实时更新(状态/评论/喜欢/等等)时获取触发器。
我从Realtime Updates documentation开始,发现这两篇博文很方便:
根据我的理解,要注册实时更新,我需要:
callback_url
callback_url
添加一个php脚本,以便在Facebook调用时处理GET请求(用于验证)和POST请求。v2.3/APP_ID/subscriptions
)理论上,在此之后,Facebook应根据注册的对象和字段POST callback_url
。
我想我已经成功注册了回调。这里大致是我得到的输出(MY_CB_URL
替换实际的URL):
{
"data": [
{
"object": "user",
"callback_url": "MY_CB_URL",
"fields": [
"statuses"
],
"active": true
},
{
"object": "page",
"callback_url": "MY_CB_URL",
"fields": [
"feed"
],
"active": true
}
]
}
回调php脚本如下所示:
<?php
define('VERIFY_TOKEN', 'vToken');
$method = $_SERVER['REQUEST_METHOD'];
if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe' && $_GET['hub_verify_token'] == VERIFY_TOKEN) {
echo $_GET['hub_challenge'];
} else if ($method == 'POST') {
$out = "";
try {
$updates = json_decode(file_get_contents("php://input"), true);
$out = print_r($updates, true);
error_log('updates = ' . $out);
} catch (Exception $e) {
error_log('Caught exception: '.$e->getMessage());
$out = $e->getMessage();
}
$file = './log.txt';
$current = file_get_contents($file);
$current .= $out;
file_put_contents($file, $current);
}
?>
我遇到的问题是,当我第一次设置时,我收到了一个POST请求,但之后没有。我没有收到任何错误,并且API确认回调已正确注册,所以我对我可能缺少的内容毫无头绪。
我发现this answer并按照
的建议拨打电话https://graph.facebook.com/PAGE_ID/tabs?app_id=APP_ID&access_token=PAGE_ACCESS_TOKEN
得到了这个回复:
{
"data": [
{
"id": "PAGE_ID/tabs/likes",
"name": "Likes",
"link": "https://www.facebook.com/pages/PAGE_NAME/PAGE_ID?sk=likes",
"is_permanent": true,
"position": 2,
"is_non_connection_landing_tab": false
},
{
"id": "PAGE_ID/tabs/photos",
"image_url": "https://fbcdn-photos-c-a.akamaihd.net/hphotos-ak-xaf1/t39.2080-0/851586_10151609549247733_1069686154_n.gif",
"name": "Photos",
"link": "https://www.facebook.com/pages/PAGE_NAME/PAGE_ID?sk=photos",
"application": {
"name": "Photos",
"id": "PHOTO_ID"
},
"is_permanent": false,
"position": 1,
"is_non_connection_landing_tab": false
}
]
}
所以现在我更加困惑了。
答案 0 :(得分:2)
向https://graph.facebook.com/PAGE_ID/tabs
发出POST请求已过时 - 您现在需要使用/PAGE_ID/subscribed_apps
订阅页面中的更新。
https://developers.facebook.com/docs/graph-api/reference/page/subscribed_apps/