Ich versuche eine Verbindung zum öffentlichen Stream Endpunkt von twitter api herzustellen.nodejs https # Anfrage fehlschlägt, wo identische curl Anfrage erfolgreich ist
Wenn ich beispielsweise Parameter lief ich von twitter api Test-Tool bekam in NodeJS i bekommen 401 unauthorized
Fehler unten können Sie meine NodeJS Beispiel Anfrage
'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"}))
sehen, aber wenn ich diese Anfrage mit curl senden hier funktioniert es perfekt ist mein beispiel locken anfrage
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
was mache ich falsch? sie sind totally identische anfragen.
'curl' gibt Ihnen einige gute Debug-Informationen, aber der' node.js' Code nicht. Können Sie https://www.npmjs.com/package/request-debug verwenden, um Debug-Ausgaben zu erhalten? Dies kann Ihnen zeigen, wie die Anfragen nicht identisch sind. –
Nur um sicher zu sein, rufen Sie nicht zuerst 'curl' an und verwenden dann dasselbe nonce mit node.js, richtig? – mdickin
@mdickin dies ist nur ein Beispiel ich erstelle ein Beispiel von api tools auf twitter Aufruf es durch curl es funktioniert dann erstellen neue caling es mit nodejs es scheitert – nikoss