如何检测API是否已关闭?

时间:2012-11-15 00:34:55

标签: facebook button error-handling facebook-like

当我输入这个fb:like按钮关闭时 - Facebook API运行状况页面报告错误 https://developers.facebook.com/live_status

我相信很快就会回来,但我怎么能发现这个? 原因是;我希望隐藏页面上的其他元素,因为当你有一个facebook功能时,它看起来很奇怪。然后按钮丢失了。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

对于NodeJS:

您可以使用节点附带的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;
      }
   });
});

希望这有帮助!