Facebook的real-time updates docs现在说你可以获得一个页面的订阅源:
您可以按照订阅的方式订阅页面的订阅源 用户的订阅源 - 订阅主题应为“用户”和 订阅字段应为'feed'
我对此的理解是,我需要发布图API以便订阅:
curl -d \
"object=user&fields=feed&callback_url=$CALLBACKURL&verify_token=$SECRET" \
"https://graph.facebook.com/$PAGEID/subscriptions?access_token=$OAUTHTOKEN"
(这是一个bash脚本。)$CALLBACKURL
在example code之后正确设置了$OAUTHTOKEN
。 (至少我认为这是正确的 - 我可以成功添加订阅。)
$PAGEID
是我的Facebook App的版本
{{1}}是我希望获得实时更新的页面的facebook对象ID。
当我这样做时,呼叫似乎有效 - 没有错误消息。我的回调被调用了。但是当我在页面的Feed中发生某些事情时,我肯定不会得到通知。
那么缺少什么?页面是否需要安装我正在使用其oauth令牌的应用程序?或者以某种方式需要通过以页面身份登录来获取页面本身的oauth令牌?
答案 0 :(得分:17)
我不知道这是否可以帮到你,但我会告诉你我在哪里用于实时更新页面提要:
(权限:manage_page,offline_access,read_stream)
您的应用程序必须链接到页面(然后安装应用程序,但不需要有标签,例如:创建标签https://graph.facebook.com/PAGE_ID/tabs?app_id=APP_ID&method=POST&access_token=PAGE_ACCESS_TOKEN和删除标签 。TAB_ID = PAGE_ID '/翼片/应用_' APP_ID。 https://graph.facebook.com/TAB_ID?method=DELETE&access_token=PAGE_ACCESS_TOKEN)
function page_access_token($page_id,$access_token){
$page_token_url="https://graph.facebook.com/" .
$page_id . "?fields=access_token&" . $access_token;
$response = file_get_contents($page_token_url);
$resp_obj = json_decode($response,true);
$page_access_token = $resp_obj['access_token'];
return $page_access_token;
}
function page_tabs_create($page_id,$app_id,$page_access_token){
$page_settings_url = "https://graph.facebook.com/" .
$page_id . "/tabs?app_id=".$app_id."&method=POST&access_token=" . $page_access_token;
$response = file_get_contents($page_settings_url);
$resp_obj = json_decode($response,true);
return $resp_obj;
}
function page_tabs_delete($tab_id,$page_access_token){
$page_settings_url = "https://graph.facebook.com/".$tab_id."?method=DELETE&access_token=" . $page_access_token;
$response = file_get_contents($page_settings_url);
$resp_obj = json_decode($response,true);
return $resp_obj;
}
订阅:订阅必须像“用户”,因此对象=用户字段= Feed但您必须添加新字段,否则它会收到评论并喜欢墙,因此您必须添加“状态”为了接收发布的文章(我的问题是获取其他内容,例如我设法添加“链接”作为字段的链接,但是我没有在发布链接时收到通知)
$ param = array('access_token'=> $ access_token, 'object'=> '用户', 'fields'=> '饲料,状态,链接' 'callback_url'=> 'http:// ******** fbcallback.php' 'verify_token'=>'***********', 'include_values'=> '真正的');
我的英语不是很好,但我希望它会对你有帮助,在我这边我仍然在寻找墙上的所有更新(链接,视频......)
答案 1 :(得分:4)
我一直在研究这个问题,而且我也在推动网页的推送。
订阅时请确保object = user和fields = feed,状态为。
确保将应用程序添加到您的页面,然后才会收到更新。
从Facebook收到的回复如下: -
{ “条目”:[{ “ID”:“的 * ** * *** 强> “ ”UID“: ”的 强> 的 ** * ** 强>“, ”时间“:1332940650,” changed_fields “:[” 状态 “]}],” 对象 “:” 用户“}
* ** * 是我的pageId。
在添加新帖子时收到上述推送,因为您可以看到changed_feild是状态,但是当我们在墙上发布时,changed_fields作为提要。下面的链接帮助我接收推送页面。
答案 2 :(得分:3)
首先,订阅页面/ Feed的实时更新不起作用。 请参阅:http://bugs.developers.facebook.net/show_bug.cgi?id=18048
页面是否需要安装我正在使用其oauth令牌的应用程序?
是
或者我是否需要通过以页面身份登录来获取页面本身的oauth令牌?
如果我正确理解您,您只需要 app access_token https://graph.facebook.com/oauth/access_token?client_id=your_app_id&client_secret=your_secret&grant_type=client_credentials
答案 3 :(得分:2)
我首先开始阅读有关实时更新的文档,认为它可以传递实际数据。但是,正如我意识到的那样,这不是目的。
实时更新只是告诉您某些内容已发生变化,一旦发生,您可以使用传统方法调用api。
此外,似乎此部分the subscription topic should be 'user' and the subscription field should be 'feed'
出现错误。实际上,订阅主题应该是“页面”。 (你有同样的想法吗?)
通过订阅页面Feed与用户Feed相同,意味着您可以获得更新通知,而不是数据本身。
不确定这是否是一个常见的错误,但我发布以防万一。
-
目前,我正在开发一种需要实时更新的数据挖掘工具。但首先,我专注于数据本身,所以我还不能发布任何例子。 (实现这部分时我会编辑这个答案)
我对您的问题的评价是:
1)看看您的$ PAGEID不正确。实际上这是你的APPID。
2)订阅后,在致电https://graph.facebook.com/<app-id>/subscriptions?access_token=...
时,您的订阅是否出现在列表中?
3)有了用户订阅,它有用吗?或者仅仅是页面?
答案 4 :(得分:1)
为此,您需要设置一个端点URL,该URL接收来自Facebook的HTTP GET(用于订阅验证)和POST(用于实际更改数据)请求。
然后您应该对图API API https://graph.facebook.com/<app-id>/subscriptions?access_token=<access_token>
进行POST订阅,并准备好处理验证请求。
然后列出订阅,只需在同一个网址https://graph.facebook.com/<app-id>/subscriptions?access_token=<access_token>
上执行GET请求,该网址返回列出订阅的JSON编码内容,每个对象类型最多一个。
答案 5 :(得分:1)
在您开始等待通知之前,您应该检查FB是否实际被点击
检查以下输出:
“https://graph.facebook.com/” .FACEBOOK_APP_ID “/订阅?” $ APPTOKEN “&安培; client_secret =”。.FACEBOOK_SECRET;
如果设置正确,这将返回callback_url!