这是我对stackoverflow的第一个问题,所以如果有什么问题请指教.. 那么问题是Facebook的实时更新: 我已经成功创建了对页面的订阅,并且它的管理员用户(测试页面和测试应用程序已创建),用户已经同意了manage_page,read_stream,read_friendlist,read_insights,publish_actions和许多用户数据(关于,电子邮件等等)的权限 当我使用边缘/订阅查询GET到Graph api时,我得到结果:
{
"data": [
{
"object": "user",
"callback_url": "LIVE_CALLBACK_URL",
"fields": [
"feed"
],
"active": true
},
{
"object": "page",
"callback_url": "LIVE_CALLBACK_URL",
"fields": [
"built",
"description",
"email",
"feed",
"location",
"name",
"personal_info",
"written_by"
],
"active": true
}
]
}
所以,这就照顾了,之后我搜索了为什么Facebook没有向我发送任何更新(我登录到somefile.txt)所以我发现你需要使用/ tabs查询Graph api来创建页面选项卡为了我的api。当我查询它返回“成功”以便创建(无法找到它存储的位置,但它正在工作......)。 之后我在我的个人资料上创建了一些数据,进行测试,并在页面上查看Facebook是否正在发送任何更新,并且它突然发送一个更新,该更新是对我的用户个人资料帖子的评论(在时间轴上共享)。 答复是:
14:17 05.02.2015
Array
(
[object] => user
[entry] => Array
(
[0] => Array
(
[uid] => ****my_fb_id****
[id] => ****my_fb_id - not_someone_else****
[time] => 1423146339
[changed_fields] => Array
(
[0] => feed
)
)
)
)
所以Facebook发送的是空的Feed,它没关系,可能是一些权限或其他东西,但之后我发了更多的帖子和ppl评论(在用户个人资料和测试页面上)但Facebook没有发送任何更新或者对我的网页的任何调用。 那么过去任何人都面临这个问题,他是如何解决这个问题的? 用于从Facebook接收更新的部分是:
$method = $_SERVER['REQUEST_METHOD'];
if(isset($_GET['hub_mode']) && isset($_GET['hub_verify_token'])){
if (trim($method) == 'GET' && trim($_GET['hub_mode']) == 'subscribe' && trim($_GET['hub_verify_token']) == VERIFY_TOKEN) {
print $_GET['hub_challenge'];
}
}
else if ($method == 'POST') {
$updates = json_decode(file_get_contents("php://input"), true);
$file = 'log.txt';
$current = file_get_contents($file);
@$results = print_r($updates,true);
$current .= $results;
file_put_contents($file, $current);
}
我试图尽可能详细地解释我的问题...搜索但不太明白为什么它不起作用。
答案 0 :(得分:0)
除了使用过时的方法@CBroe概述,我认为你有一个误解:Facebook不会发送已更改的数据,但对象(及其字段/ edge)用户对象更改发生了更改。
对于Pages,您可以自行接收更改(FB请求中的changed_fields
与changes
字段。)
见
成功创建订阅后,每次发生更改(选择的字段或边缘)时,Facebook都会向您的回调网址发出HTTP POST请求。
这意味着您需要从Facebook获得的info对象中构建单独的请求。在您的示例中,它将是对您用户的Feed的请求
GET /{user_id}/feed
查询最近的更改。