2016-05-14 18 views
7

Sto tentando di connettermi all'endpoint di flusso pubblico di twitter api.nodejs https # richiesta non riesce dove la richiesta di arricciamento identica ha esito positivo

quando mi sono imbattuto esempio i parametri che ho ricevuto da strumento di test API di Twitter in nodejs ottengo 401 unauthorized errore qui sotto puoi vedere le mie nodejs esempio di richiesta

'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"})) 

Ma se i inviare questa richiesta con l'arricciatura funziona perfettamente qui è il mio esempio arricciatura richiesta

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 

quello che sto facendo di sbagliato? sono tottaly richieste identiche.

+1

'curl' fornisce alcune buone informazioni di debug, ma il codice' node.js' no. Puoi usare https://www.npmjs.com/package/request-debug per ottenere un output di debug? Questo potrebbe mostrarti in che modo le richieste non sono identiche –

+0

Per sicurezza, non stai chiamando 'curl' prima e poi riusare lo stesso nonce con node.js, giusto? – mdickin

+0

@mdickin questo è solo un esempio creo un esempio dagli strumenti api su twitter chiamandolo tramite curl funziona poi creando nuovo caling con nodejs fallisce – nikoss

risposta

5

Non è possibile hardcode il timestamp nella richiesta OAuth. Se il codice che stai presentando è quello che stai usando, questa potrebbe essere la causa del problema. Ti consiglio di utilizzare il pacchetto oauth per generare l'intestazione Autorizzazione.

+0

ho un codice funzionante per ottenere richieste a twitter ma lo stesso codice fallisce per i flussi – nikoss

Problemi correlati