验证Node.js服务器以进行Twitter API调用

时间:2016-03-29 16:24:47

标签: javascript node.js api twitter oauth

我有一个本地运行的节点(快速)服务器,我正在尝试向Twitter /trends/place端点发送GET请求。我使用this twitter NPM package来促进。我的理解是我已经获得了插入API的正确的消费者密钥,消费者秘密,访问令牌和访问令牌秘密。我在dev.twitter网站上为我的应用程序生成了它们。

目前我收到code: 32 message: 'Could not authenticate you.错误。我已尝试使用和不使用参数{id: 1}对象。我测试了使用Twitter oauth生成器生成的curl语句(参见链接1)并且它成功了。我已确认这四个密钥都是从creds.js正确导出并使用控制台日志正确导入server.js。我不能正确理解这个NPM包吗?

下面的代码,减去前端和不相关的处理:

server.js

var express = require('express');
var app = express();
var twitterAPI = require('twitter');
//just storing these as plaintext, pulled straight off the oath 
//twitter tool
var secrets = require(__dirname + '/creds.js');


var twitter = new twitterAPI({
  consumerKey: secrets.consumerKey,
  consumerSecret: secrets.consumerSecret,
  access_token_key: secrets.accessToken,
  access_token_secrets: secrets.accessTokenSecret
});


//send a get request to trends/place
twitter.get('trends/place', {id: 1}, function(error, tweets, response){
  console.log('myerror is: ', error);
});

app.get('/', function(req, res){
  res.send('test');
});

app.listen(process.env.PORT || 3000, function(){
  console.log("Prompter listening on port 3000.");
});

的package.json

{
  "dependencies": {
    "express": "^4.13.4",
    "twitter": "^1.2.5"
  }
}

console.log()'是响应对象,其上的标题是:

GET /1.1/trends/place.json?id=1 HTTP/1.1\r\nAccept: */*\r\nConnection: close\r\nUser-Agent: node-twitter/1.2.5\r\nhost: api.twitter.com\r\nAuthorization: OAuth oauth_consumer_key="null",oauth_nonce="(hidden for stackoverflow)",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1459220083",oauth_token="(hidden for stackoverflow)",oauth_version="1.0",oauth_signature="(hidden for stack overflow)"\r\ncontent-length: 0\r\n\r\n',

因此,您不必向右滚动,有趣的是:

oauth_consumer_key="null"

为什么那会是空的而其他一切都是正确的?

0 个答案:

没有答案