当我输入这个 fb:like 按钮时,Facebook API 健康页面正在报告错误 https://developers.facebook.com/live_status
我相信它很快就会回来,但我怎么能检测到呢?原因是;我希望隐藏页面上的其他元素,因为当您有 Facebook 功能时它看起来很奇怪,然后按钮丢失了。
当我输入这个 fb:like 按钮时,Facebook API 健康页面正在报告错误 https://developers.facebook.com/live_status
我相信它很快就会回来,但我怎么能检测到呢?原因是;我希望隐藏页面上的其他元素,因为当您有 Facebook 功能时它看起来很奇怪,然后按钮丢失了。
从该站点获取 JSON 响应:https ://www.facebook.com/feeds/api_status.php
对于 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;
}
});
});
希望这可以帮助!