当我尝试在节点中执行https发布请求时,我得到一个getaddrinfo ENOTFOUND错误

问题描述 投票:0回答:2

完整的错误是这样的:

events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: getaddrinfo ENOTFOUND https://api.instagram.com https://api.instagram.com:443
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:79:26)

而我的代码只是为了得到错误:

var express = require('express');
var app = express();
var https = require('https');

app.get('/oauth/ig', function (req, res) {
  var options = {
    hostname: 'https://api.instagram.com',
    path: '/oauth/access_token?client_secret=myClientSecret&grant_type=authorization_code&redirect_uri=http://localhost:1992/oauth/ig&code='+req.query.code,
    method: 'POST',
  };
  var igRequest = https.request(options, (response) => {
    res.send("response");
  });
})

我正在使用nodejs并且我正在尝试使用Instagram OAUTH。

node.js oauth https instagram
2个回答
2
投票

hostname应该只是主机名,不包括协议:

hostname: 'api.instagram.com',

2
投票

除了mscdex的答案之外,还值得一提的是npm上已有工作模块可以做到这一点,例如:

也许您可以使用其中一个而不是滚动自己的解决方案。

推出自己的解决方案没有任何问题,但是如果你做不到正确的话,有时候这不值得麻烦。

我上面推荐的两个模块是Passport的Instagram策略,这是在Node中进行身份验证的事实标准方式,有300多种不同的策略可供您统一使用。

有关更多信息,请访问Passport网站。

© www.soinside.com 2019 - 2024. All rights reserved.