使用nodejs进行Facebook身份验证

时间:2012-11-10 18:27:55

标签: facebook node.js authentication request response

我正在尝试在facebook中验证用户身份:

var querystring = require('querystring');
var http = require('http');
var fs = require('fs');

getCookies(function(cookies){
  logIn(cookies);
});

function logIn(cookies) {
  var post_data = querystring.stringify({
      'email': 'email@domain',
      'pass': 'password'
  });

  var post_options = {
      host: 'www.facebook.com',
      port: '80',
      path: '/login.php?login_attempt=1',
      method: 'POST',
      headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'Content-Length': post_data.length,
          'user-agent': 'Mozilla/5.0',
          'set-cookie': cookies[0]
      }
  };

  var post_req = http.request(post_options, function(res) {
      res.setEncoding('utf8');
      console.log(res.statusCode);
      var data = '';
      res.on('data', function (chunk) {
          data += chunk;
      });
      res.on('end', function () {
          fs.writeFile("C:\\Users\\user\\Desktop\\fb.html", data, function(err) {
              if(err) {
                  console.log(err);
              } else {
                  console.log("The file was saved!");
              }
          });
      });
  });

  post_req.write(post_data);
  post_req.end();
}

function getCookies(callback){
  var get_options = {
      host: 'www.facebook.com',
      port: '80',
      path: '/',
      method: 'GET',
      headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'user-agent': 'Mozilla/5.0'
      }
  };

  var get_req = http.request(get_options, function(res) {
      var cookies = res.headers['set-cookie'];
      res.on('end', function (chunk) {
          callback(cookies);
      });
  });

  get_req.write('');
  get_req.end();
}

但回应是我的浏览器中的cookie未启用。请不要建议使用现有的图书馆连接到Facebook,我正在学习...提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

Facebook使用OAuth身份验证来验证用户身份。我使用oAuth模块访问http://nabaruns.blogspot.in/2013/01/linkedin-api-call-using-nodejs-oauth.html上的Linkedin API。您可以尝试相同,看看你是否可以调用图Facebook apis。

希望这有帮助