0

当我输入这个 fb:like 按钮时,Facebook API 健康页面正在报告错误 https://developers.facebook.com/live_status

我相信它很快就会回来,但我怎么能检测到呢?原因是;我希望隐藏页面上的其他元素,因为当您有 Facebook 功能时它看起来很奇怪,然后按钮丢失了。

4

2 回答 2

4

从该站点获取 JSON 响应:https ://www.facebook.com/feeds/api_status.php

于 2012-11-15T00:37:23.730 回答
0

对于 NodeJS:

可以使用Node自带的https模块:https ://nodejs.org/api/https.html#https_https_request_options_callback

我在我的 Node.js 服务器上为此苦苦挣扎,但找到了解决方案。我试图做一个没有运气的 http 请求(一直得到一个不受支持的浏览器问题),但是当我尝试用 cURL 做它时,它工作得很好。

因此,我决定在我的 NodeJS 请求的标头中传递一个 User-Agent,因为我遇到了不受支持的浏览器问题:

var https = require("https");

var options = {
      hostname: 'www.facebook.com',
      port: 443,
      path: '/feeds/api_status.php',
      method: 'GET',
      headers: {
        "User-Agent": 'curl/7.43.0'
      }
};

var req = https.request(options, function(res) {
      res.on('data', function(d) {
        process.stdout.write(d);
      });
});

req.end();

req.on('error', function(e) {
    console.error(e);
});

api_status 然后在您的控制台中打印出来,如下所示:

{
   "current": {
      "health": 1,
      "subject": "Facebook Platform is Healthy"
    },
    "push": {
       "status": "Complete",
       "updated": "2016-01-27T16:05:12-08:00",
       "id": 61183893
    }
}

你可以用它做你需要的。例如,如果您想使用它来查看 Facebook API 是否健康,您可以执行以下操作:

var facebookIsHealthy;

var req = https.request(options, function(res) {
   res.on('data', function(d) {
      // d is a buffer object

      var bufferString = d.toString();
      var bufferObject = JSON.parse(bufferString);

      if(bufferObject.current.health === 1) {
          facebookIsHealthy = true;
      }

      else {
          facebookIsHealthy = false;
      }
   });
});

希望这可以帮助!

于 2016-01-28T01:13:02.147 回答