2016-05-14 7 views
7

Próbuję połączyć się z publicznym strumieniem końcowym punktu końcowego api aplikacji Twitter.nodejs https # request kończy się niepowodzeniem, gdy identyczne żądanie curl się powiedzie

Kiedy prowadził przykładowe parametry dostałem z API Twittera narzędzia testowego w nodejs ja dostać 401 unauthorized błąd poniżej można zobaczyć mój przykład żądanie 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"})) 

ale jeśli mam wysłać wniosek z curl doskonale działa tu jest moje przykładowe żądanie zwijania się:

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 

co robię źle? są to identyczne żądania.

+1

'curl' daje dobre informacje debugowania, ale kod' node.js' nie ma. Czy możesz użyć https://www.npmjs.com/package/request-debug, aby uzyskać dane wyjściowe debugowania? To może pokazać, w jaki sposób żądania nie są identyczne. –

+0

Po prostu nie nazywaj najpierw 'curl', a następnie używaj tego samego nonce z node.js, prawda? – mdickin

+0

@mdickin to jest tylko przykład Tworzę przykład z narzędzi api na twitterze wywołując go poprzez curl działa następnie tworząc nowy caling to z nodejs to się nie uda – nikoss

Odpowiedz

5

Nie można zakodować kodu czasowego w żądaniu OAuth. Jeśli przedstawiony kod jest tym, którego używasz, może to być przyczyną problemu. Polecam użyć pakietu oauth do wygenerowania nagłówka Authorization.

+0

Mam działający kod dla otrzymywania żądań do twitter ale ten sam kod nie działa dla strumieni – nikoss

Powiązane problemy