0

我正在尝试在 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,我正在学习...提前感谢您的帮助

4

1 回答 1

1

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

希望这可以帮助

于 2013-01-06T14:45:21.463 回答