在Node.js中获取Facebook页面的公共供稿

时间:2014-07-18 09:14:04

标签: facebook node.js facebook-graph-api module

我正在开发一个简单的节点/快递/玉网站,用于获取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的部分,如下所述: enter image description here

1 个答案:

答案 0 :(得分:4)

不确定为什么要包含OAuth内容(我觉得这样做不行,因为如果我理解正确的话,你不会将code换成实际的访问令牌... ... < / p>

根据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模块requestrestler,这样可以更轻松地处理HTTP。