twitter apiの公開ストリームエンドポイントに接続しようとしています。nodejs https#要求が失敗し、同じcurl要求が成功した場合
私はnodejsうtwitter APIテストツールから得た例のパラメータを実行したとき、私はあなたが私の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"}))
を見ることができますが、私はカールにこの要求を送信する場合、それは完全にここにされて動作します以下401 unauthorized
エラーが出ます私の例のカール要求
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
私は間違って何をしているのですか?彼らは完全に同じ要求です。
'curl'は良いデバッグ情報を与えますが、' node.js'コードはありません。いくつかのデバッグ出力を得るためにhttps://www.npmjs.com/package/request-debugを使用できますか?これはリクエストがどのように同一でないかを示しているかもしれません –
まず、curlを最初に呼び出してからnode.jsで同じnonceを再利用するのではないでしょうか? – mdickin
@mdickinこれは単なる例です。私はtwitterのAPIツールから例を作成し、それをカールで呼び出すと動作し、新しいノードを作成すると失敗します。 – nikoss