getaddrinfo ENOTFOUND https://graph.facebook.com/



我正在使用Node https库将数据发送到Facebook API。我最终得到错误:

getaddrinfo ENOTFOUND https://graph.facebook.com/ https://graph.facebook.com/:443

我觉得这很奇怪,因为与邮递员提出的相同请求没有任何问题。

我试过nslookup

$ nslookup https://graph.facebook.com/
Server:     1.1.1.1
Address:    1.1.1.1#53
** server can't find https://graph.facebook.com/: NXDOMAIN

不知道是什么原因造成的。

这是我使用匿名令牌的代码:

var inputData = new Array;
inputData.firstname = "First name";
inputData.lastname = "Last name"
inputData.phone = "Phone";
inputData.email = "Email";
inputData.workable_stage = "Applied";
inputData.access_token = 'xxx';
var https = require('https');
var crypto = require('crypto'); // Facebook API requires hashing of user data
var querystring = require('querystring');
const firstname_hash = crypto.createHash('sha256');
const lastname_hash = crypto.createHash('sha256');
const phone_hash = crypto.createHash('sha256');
const email_hash = crypto.createHash('sha256');
// hash user data
firstname_hash.update(inputData.firstname);
var firstname_hashed = firstname_hash.digest('hex');
lastname_hash.update(inputData.lastname);
var lastname_hashed = lastname_hash.digest('hex');
phone_hash.update(inputData.phone);
var phone_hashed = phone_hash.digest('hex');
email_hash.update(inputData.email);
var email_hashed = email_hash.digest('hex');
// prepare data object
var fb_data = [
  { match_keys: 
         {
           "fn": firstname_hashed,
           "ln": lastname_hashed,
           "phone": phone_hashed,
           "email": email_hashed
         }, 
   event_name: "Lead",
   event_time: Date.now() / 1000 | 0, // UNIX timestamp in seconds, see: https://stackoverflow.com/a/221297/6178132
   custom_data: {
     workable_stage: inputData.workable_stage,
   }
  }
]
body = {
  access_token: inputData.access_token,
  upload_tag: "store_data",
  data: fb_data
}
console.log(querystring.stringify(body));
var postData = querystring.stringify(body);
// send http request
const options = {
  hostname: 'https://graph.facebook.com/',
  port: 443,
  path: '/v3.3/123/events',
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form-data',
    'Content-Length': Buffer.byteLength(postData)
  }
};
const req = https.request(options, (res) => {
  console.log(`STATUS: ${res.statusCode}`);
  console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
  res.setEncoding('utf8');
  res.on('data', (chunk) => {
    console.log(`BODY: ${chunk}`);
  });
  res.on('end', () => {
    console.log('No more data in response.');
  });
});
req.on('error', (e) => {
  console.error(`problem with request: ${e.message}`);
});
// Write data to request body
req.write(postData);
req.end();

如果您更改选项,以便请求应该有效,则主机名参数是唯一需要更新的参数:

const options = {
    hostname: 'graph.facebook.com',
    port: 443,
    path: '/v3.3/123/events',
    method: 'POST',
    headers: {
    'Content-Type': 'multipart/form-data',
    'Content-Length': Buffer.byteLength(postData)
    }
};

最新更新