nodejs https#request在相同的curl请求成功的地方失败

nik*_*oss 7 https curl request node.js twitter-oauth

我正在尝试连接到twitter api的公共流端点.

当我运行示例参数时,我从nodejs中的twitter api测试工具获得我得到的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"}))
Run Code Online (Sandbox Code Playgroud)

但是,如果我发送这个请求curl它完全适用于这里是我的示例curl请求

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 
Run Code Online (Sandbox Code Playgroud)

我做错了什么?他们完全相同的要求.

yei*_*iel 5

您无法对OAuth请求中的时间戳进行硬编码.如果您呈现的代码是您正在使用的代码,那么这可能是问题的原因.我建议您使用oauth包来生成Authorization标头.