我有以下推特令牌:
var tokens = {
consumer_key: 'xxx',
consumer_secret: 'xxx',
access_token_key: 'xxx',
access_token_secret: 'xxx'
};
以下http_options
var options = {
host: 'https://api.twitter.com',
path: '1.1/users/lookup.json?screen_name='+screen_name,
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
}
我尝试了这个但是失败了
var options = {
host: 'https://api.twitter.com',
path: '/1.1/users/lookup.json?screen_name='+screen_name,
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
auth: {
consumer_key: 'xxx',
consumer_secret: 'xxx',
access_token_key: 'xxx',
access_token_secret: 'xxx'
}
}
在以下代码中:
var http_client = require('http');
var reqPost = http_client.request(options, function(res) {
res.on('data', function(d) {
buffer = buffer+d;
});
res.on('end', function() {
buffer = JSON.parse(buffer);
console.log("inside stream, BUFFER:",buffer);
});
});
reqPost.write();
reqPost.end();
如果您打开此链接https://api.twitter.com/1.1/users/lookup.json?screen_name=testuser,您可能会看到{"errors":[{"message":"Bad Authentication data","code":215}]}
,因此我不确切知道应该如何完成此操作。有人能帮我吗?非常感谢你。
答案 0 :(得分:0)
您oauth
请求访问Twitter API的方式不正确。您可能需要oauth
模块才能完成此任务。查看此模块存储库中的README
https://github.com/ciaranj/node-oauth
我建议你使用twitter模块来完成给定的任务。看看这个例子。
var Twitter = require('twitter');
var client = new Twitter({
consumer_key: 'xxx',
consumer_secret: 'xxx',
access_token_key: 'xxx',
access_token_secret: 'xxx'
});
var params = {screen_name: 'nodejs'};
client.get('users/lookup.json', params, function(error, tweets, response){
if (!error) {
console.log(tweets);
}
});
答案 1 :(得分:0)
也一直在努力处理此代码。最终使它可以与Node native https一起使用。使我们现在有了反引号变得容易得多。我建议您首先让它在Postman中工作,单击代码按钮,然后将值插入此代码段中。 但是,您仍然需要执行一些OAuth活动以使其具有可重复性,并且需要epoc时间戳。可能更易于使用和oauth模块。
const http = require("https");
// prettier-ignore
const options = {
"method": "GET",
"hostname": "api.twitter.com",
"port": 443,
"path": "/1.1/collections/entries.json?id=custom-90708098097098-fake",
"headers": {
"authorization":`OAuth oauth_consumer_key="yourtwitterconsumerkey",oauth_token="yourregisteredtwittertoken", oauth_signature_method="HMAC-SHA1",oauth_timestamp="atimestame",oauth_nonce="anonceofyourchoic",oauth_version="1.0",oauth_signature="anoauthtweet"`,
"cache-control": "no-cache"
}
};
const req = http.request(options, function(res) {
let chunks = [];
res.on("data", function(chunk) {
chunks.push(chunk);
});
res.on("end", function() {
let body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();