如何订阅Facebook页面墙的实时更新

时间:2011-09-09 22:06:51

标签: facebook facebook-graph-api real-time

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脚本。)$CALLBACKURLexample code之后正确设置了$OAUTHTOKEN。 (至少我认为这是正确的 - 我可以成功添加订阅。) $PAGEID是我的Facebook App的版本 {{1}}是我希望获得实时更新的页面的facebook对象ID。

当我这样做时,呼叫似乎有效 - 没有错误消息。我的回调被调用了。但是当我在页面的Feed中发生某些事情时,我肯定不会得到通知。

那么缺少什么?页面是否需要安装我正在使用其oauth令牌的应用程序?或者以某种方式需要通过以页面身份登录来获取页面本身的oauth令牌?

6 个答案:

答案 0 :(得分:17)

我不知道这是否可以帮到你,但我会告诉你我在哪里用于实时更新页面提要:

(权限:manage_page,offline_access,read_stream)

  1. 您的应用程序必须链接到页面(然后安装应用程序,但不需要有标签,例如:创建标签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; }

  2. 订阅:订阅必须像“用户”,因此对象=用户字段= Feed但您必须添加新字段,否则它会收到评论并喜欢墙,因此您必须添加“状态”为了接收发布的文章(我的问题是获取其他内容,例如我设法添加“链接”作为字段的链接,但是我没有在发布链接时收到通知)

    $ param = array('access_token'=> $ access_token, 'object'=> '用户', 'fields'=> '饲料,状态,链接' 'callback_url'=> 'http:// ******** fbcallback.php' 'verify_token'=>'***********', 'include_values'=> '真正的');

    POST https://graph.facebook.com/APP_ID/subscriptions

  3. 我的英语不是很好,但我希望它会对你有帮助,在我这边我仍然在寻找墙上的所有更新(链接,视频......)

答案 1 :(得分:4)

我一直在研究这个问题,而且我也在推动网页的推送。

  1. 订阅时请确保object = user和fields = feed,状态为。

  2. 确保将应用程序添加到您的页面,然后才会收到更新。

  3. 从Facebook收到的回复如下: -

  4. { “条目”:[{ “ID”:“的 * ** * *** “ ”UID“: ”的 ** * ** “, ”时间“:1332940650,” changed_fields “:[” 状态 “]}],” 对象 “:” 用户“}

    * ** * 是我的pageId。

    在添加新帖子时收到上述推送,因为您可以看到changed_feild是状态,但是当我们在墙上发布时,changed_fields作为提要。下面的链接帮助我接收推送页面。

    http://bugs.developers.facebook.net/show_bug.cgi?id=18048

答案 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!