在 Node.js 中获取 Facebook 页面的公共提要
Posted
技术标签:
【中文标题】在 Node.js 中获取 Facebook 页面的公共提要【英文标题】:Get public feeds of a Facebook Page in Node.js 【发布时间】:2014-07-18 09:14:04 【问题描述】:我正在开发一个简单的 node/express/jade 网站,用于获取 Facebook 页面的所有公共供稿。
我创建了一个应用程序,从中获得了 client_id (APP_ID) 和 client_secret (APP_SECRET)。
我的代码有效,没关系,但我想知道这是否是处理这种需求的正确方法。
代码如下:
var https = require('https'),
concat = require('concat-stream'),
async = require('async');
function FacebookPage(pageId)
if (!(this instanceof FacebookPage))
return new FacebookPage(pageId);
this.pageId = pageId;
FacebookPage.prototype.getPublicFeeds = function (callback)
var pageId = this.pageId;
async.waterfall([
function (done)
var params =
hostname: 'graph.facebook.com',
port: 443,
path: '/oauth/access_token?client_id=MY_CLIENT_ID&' +
'client_secret=MY_CLIENT_SECRET&grant_type=client_credentials',
method: 'GET'
;
https.get(params, function (response)
//response is a stream so it is an EventEmitter
response.setEncoding("utf8");
//More compact
response.pipe(concat(function (data)
done(null, data);
));
response.on("error", done);
);
,
function (access_token, done)
var params =
hostname: 'graph.facebook.com',
port: 443,
path: '/v2.0/' + pageId + '/feed?' + access_token,
method: 'GET'
;
https.get(params, function (response)
//response is a stream so it is an EventEmitter
response.setEncoding("utf8");
//More compact
response.pipe(concat(function (data)
callback(null, JSON.parse(data));
));
response.on("error", callback);
);
]);
;
module.exports = FacebookPage;
编辑:感谢@Tobi,我可以通过输入 access_token=app_id|app_secret 来删除获取 access_token 的部分,如下所述:
【问题讨论】:
【参考方案1】:不知道您为什么要包含在 OAuth 中(我认为这是行不通的,因为如果我理解正确,您不会将 code
换成实际的访问令牌)...
根据https://developers.facebook.com/docs/graph-api/reference/v2.0/page/feed/,你需要an access token ... to view publicly shared posts.
,这意味着你也可以使用app_id|app_secret
形式的应用访问令牌。
然后你可以使用
GET /page_id/feed
通过将access_token
参数与您的应用访问令牌一起传递给端点。我还建议使用 NPM 模块 request
或 restler
,它们使 HTTP 处理更容易。
【讨论】:
我阅读了访问令牌文档页面,但我专注于页面访问令牌,没有看到您的建议。所以我认为你是对的,我会将文档添加到 OP 中。我让这个问题更加开放,只是为了看看其他人是否会发表评论。非常感谢 这是正确的,您只需要一个应用访问令牌即可获取 Facebook 应用的提要。您只需要一个页面访问令牌即可作为页面发布,或访问非公开内容(如见解)。以上是关于在 Node.js 中获取 Facebook 页面的公共提要的主要内容,如果未能解决你的问题,请参考以下文章
使用 Sails.JS 框架的 Node.JS -- Passport:没有在名称下注册策略:facebook
如何使用 node.js 和 javascript 模仿 Facebook 的“链接共享”功能
如何在没有客户端的情况下使用 facebook 的护照在 node.js 中构建 REST 服务?