来自Facebook的实时页面更新

时间:2014-09-29 16:31:37

标签: php facebook facebook-graph-api

我有一个Web应用程序需要获取特定页面的实时更新。我在这个论坛上经历了很多问题,但没有发现任何对我有用的东西。当我订阅页面更新

我提供有效的app_id,app_secret和app_url。

 <?php

  $app_id = '';
  $app_secret = '';
  $app_url = '';
  $fields = 'feed';
  $verify_token = 'abcd@123';

  // Fetching an App Token
  $app_token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
                   .$app_id.'&client_secret='.$app_secret
                   .'&grant_type=client_credentials';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $app_token_url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $res = curl_exec($ch);
  parse_str($res, $token);

  if (isset($token['access_token'])) {
    // Let's register a callback
    $params = array(
      'object'
        =>  'page',
      'fields'
        =>  $fields,
      'callback_url'
        // This is the endpoint that will be called when
        // a User updates the location field
        =>  $app_url . '/index.php?action=callback',
      'verify_token'
        =>  $verify_token,
    );

    curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/'
                                  .$app_id.'/subscriptions?access_token='
                                  .$token['access_token']);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    $res = curl_exec($ch);
    if ($res && $res != 'null') {
      print_r($res);
    }

    // Fetch list of all callbacks
    curl_setopt($ch, CURLOPT_POST, 0);
    $res = curl_exec($ch);
  }
  if ($res && $res != 'null') {
    print_r($res);
    error_log('updates = ' . print_r($res, true));
  }
  curl_close($ch);

?>

FB发布到我的回调网址,但不发送已更新的帖子的ID,而是在id和uid中发送用户ID。即使是更新也是不规则的,有时会有通知,有时则没有通知。

我需要做些什么来完成这项工作?

  1. 有关于白名单应用程序的内容 - 是否需要这样做。
  2. 我是否需要将此应用程序设为Facebook应用程序并让页面在选项卡上安装此应用程序?
  3. 我是否需要获得页面管理员授予的特殊权限。
  4. 可以这样做吗?
  5. 非常欢迎任何帮助。谢谢!

    此论坛上的类似问题:Facebook Real Time Update return only "changed_fields":["feed"] and not the actual comment

0 个答案:

没有答案