7
我正在嘗試連接到twitter api的公共流端點。nodejs https#請求失敗,其中相同的curl請求成功
,當我跑的示例參數我從Twitter的API測試工具中的NodeJS了,我得到401 unauthorized
錯誤下面你可以看到我的NodeJS例如要求
'use strict';
const https = require('https');
const qs = require('querystring');
const obj = {
method: "POST",
headers: {
Authorization: 'OAuth oauth_consumer_key="pXZ8xSWvjZjE4UaNntVsCwWPg", oauth_nonce="776f1a4ec0c3ed9ecbfb68aa0f7e2324", oauth_signature="jk8e84V0OcgcepkL7F%2BXt2fAy8o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463258508", oauth_token="416282416-vFTMVJCFiRW8G6nwoFhH3OBqrJsKDbIJ93sbOm2a", oauth_version="1.0"'
},
hostname: "stream.twitter.com",
path: "/1.1/statuses/filter.json"
}
https.request(obj,res => {
res.on("data", d => {
console.log(d.toString());
});
}).end(qs.stringify({track:"javascript"}))
但是,如果我用捲曲發送該請求,它完美的作品在這裏我的例子捲曲請求
curl --request 'POST' 'https://stream.twitter.com/1.1/statuses/filter.json' --data 'track=javascript' --header 'Authorization: OAuth oauth_consumer_key="pXZ8xSWvjZjE4UaNntVsCwWPg", oauth_nonce="776f1a4ec0c3ed9ecbfb68aa0f7e2324", oauth_signature="jk8e84V0OcgcepkL7F%2BXt2fAy8o%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463258508", oauth_token="416282416-vFTMVJCFiRW8G6nwoFhH3OBqrJsKDbIJ93sbOm2a", oauth_version="1.0"' --verbose
我在做什麼錯?他們是tottaly相同的請求。
'curl'給你一些很好的調試信息,但是'node.js'代碼沒有。你可以使用https://www.npmjs.com/package/request-debug獲得一些調試輸出嗎?這可能會告訴你以何種方式請求不相同 –
可以肯定的是,你不是先調用'curl',然後重複使用與node.js相同的nonce,對吧? – mdickin
@mdickin這只是一個例子,我創建了一個示例,從Twitter上的API工具調用它通過捲曲它的作品,然後創建新的調用它與nodejs它失敗 – nikoss