Javascript 如何轻松使用Facebook API实时更新功能?

Javascript 如何轻松使用Facebook API实时更新功能?,javascript,php,facebook,facebook-graph-api,Javascript,Php,Facebook,Facebook Graph Api,首先,为在Facebook实时更新上发布另一个问题表示歉意。我已经阅读了许多已有的答案和有用的文章,这些都很有帮助,但我似乎仍然不知道如何把所有的东西放在一起 我所要做的就是在有用户或页面实时更新(无论是状态/评论/喜欢/等等)时触发 我从开始写这两篇博文,发现这两篇博文很方便: 据我所知,要注册实时更新,我需要: 创建一个WWW-Facebook应用程序 将Facebook应用程序指向回调\u url 在callback\uURL中添加一个php脚本,在Facebook调用时处理GET

首先,为在Facebook实时更新上发布另一个问题表示歉意。我已经阅读了许多已有的答案和有用的文章,这些都很有帮助,但我似乎仍然不知道如何把所有的东西放在一起

我所要做的就是在有用户或页面实时更新(无论是状态/评论/喜欢/等等)时触发

我从开始写这两篇博文,发现这两篇博文很方便:

据我所知,要注册实时更新,我需要:

  • 创建一个WWW-Facebook应用程序
  • 将Facebook应用程序指向
    回调\u url
  • callback\uURL
    中添加一个php脚本,在Facebook调用时处理GET请求(用于验证)和POST请求
  • 使用Graph API注册回调(
    v2.3/APP\u ID/subscriptions
  • 将Facebook登录按钮添加到页面(包括所需的范围/权限)并执行登录操作
  • 理论上,在这一点之后,Facebook应该根据注册的对象和字段发布到
    回调url

    我想我已经成功注册了回调。这里大概是我得到的输出(用
    MY\u CB\u URL
    替换实际的URL):

    回调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);
    
    }
    
    ?>
    
    得到的回答是:

    {
       "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
          }
       ]
    }
    

    所以现在我更困惑了。

    https://graph.facebook.com/PAGE_ID/tabs
    已过时–您需要立即使用
    /PAGE\u ID/subscribed\u apps
    从页面订阅更新


    至少根据图形API,我可以看到应用程序被链接:```{“数据”:[{“名称”:“应用程序名称”,“id”:“应用程序id”}]}``但我仍然没有得到任何更新。我试着在我的账户和facebook页面上发帖,但没有发现问题:url是文件夹的路径,因为我的脚本名为index.php。路径应该是显式的(包括指向.php的路径,而不仅仅是文件夹)
    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
          }
       ]
    }