2016-09-17 61 views
0

完整的錯誤是這樣的:當我嘗試做節點的HTTPS POST請求,我得到的getaddrinfo ENOTFOUND錯誤

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("fuck it"); 
    }); 
}) 

我正在使用nodejs,並試圖做Instagram OAUTH。

回答

3

hostname應該只是主機名,不包括協議:

hostname: 'api.instagram.com', 
+0

真棒,它的工作,但現在它只是永遠加載。任何想法爲什麼? –

+0

我對instagram API不熟悉,也許您可​​能會問另一個問題,如果您有其他問題,請單獨提問。 – mscdex

+0

「永久加載」的原因可能是因爲你沒有結束'igRequest'。使用'https.request()'要求你顯式調用'igRequest.end()'讓節點知道你的POST請求中什麼時候發送了正文內容。 – mscdex

1

除了由MSCDEX答案,這是值得一提的是上npm 也有已經工作的模塊,這樣做,例如:

也許你可以使用,而不是滾動您自己的解決方案其中之一。

滾動你自己的解決方案沒有錯,但如果你不能正確的解決問題,有時候它不值得一提。

我上面推薦的兩個模塊是Passport的Instagram策略,它是Node中進行身份驗證的事實上的標準方式,提供超過300種不同的策略供您統一使用。

有關更多信息,請參見Passport網站。

相關問題