从node.js中的twitter用户时间轴获取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从node.js中的twitter用户时间轴获取数据相关的知识,希望对你有一定的参考价值。

[我正在尝试从node.js中的twitter获取已登录用户的推文,但出现错误

错误:[代码:32,消息:'无法验证您的身份。' ]

下面是我的代码段,任何帮助都会非常有用

var oauthSignature =require('oauth-signature');
var request = require('request');
var timestamp =Math.floor(Date.now() / 1000);
function guid() 

    function s4() 
      return Math.floor((1 + Math.random()) * 0x10000)
        .toString(16)
        .substring(1);
    
    return s4() + s4() + s4()  + s4()  +
    s4()  + s4() + s4() + s4();

var uuid = guid();
var options = 
    encodeSignature: true // will encode the signature following the RFC 3986 Spec by default 


var httpMethod = 'GET',
    url = 'https://api.twitter.com/1.1/statuses/user_timeline.json',
    parameters = 
        oauth_consumer_key : 'wxyrliZD8VdweAzzS31FElIkhK',
        oauth_token : '3724495214-DBOnDCGcWtsektrxb8o6N3eKsTnahvL7OjJDzAfS',
        oauth_nonce : uuid,
        oauth_timestamp : timestamp,
        oauth_signature_method : 'HMAC-SHA1',
        oauth_version : '1.0'
    ,
    consumerSecret = 'MIQwmQveTqMsFBxoJTfx8Coh9ZQ41eaV0SgJsdGKquXWKThaCHv',
    tokenSecret = 'JBxBAgXxUVh3RZHE9ZXRTYbujYhD9ekrYiCee0hxsWA2U',
    // generates a RFC 3986 encoded, BASE64 encoded HMAC-SHA1 hash 
    encodedSignature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret);
    var signature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret,
         encodeSignature: false);
    console.log(signature)
    // generates a BASE64 encode HMAC-SHA1 hash    

  request.get(url:'https://api.twitter.com/1.1/statuses/user_timeline.json',
            'headers':'Authorization':' OAuth oauth_token="3724495214-DBOnDCGcWtseketrxb8o6N3KsTnahvL7OjJDzAfS",oauth_signature='+encodeURI(signature)+',oauth_version="1.0",oauth_nonce='+uuid+', oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_consumer_key = "wxyrliZD8VdwAzrzS31FElIkhK", oauth_timestamp='+timestamp,json:true,timeout: 5000,function (e, r, user) 
              console.log(e,user);
);
答案

我找到了解决方案。请检查下面的代码。我们可以使用节点模块'twitter-node-client'代替构建自定义代码

var Twitter =  require('twitter-node-client').Twitter;
var error = function (err, response, body) 
    console.log('ERROR [%s]', err);
;
var success = function (data) 
    console.log('Data [%s]', data);
;
var config = 
    "consumerKey": "key",
    "consumerSecret": "secret",
    "accessToken": req.session.twitterAccessToken,
    "accessTokenSecret": req.session.twitterAccessSecret    
;
var twitter = new Twitter(config);
twitter.getUserTimeline(user_id: req.session.influencer.twitterId,count: '1', error,success);

以上是关于从node.js中的twitter用户时间轴获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python从用户时间线twitter检索/查找tweet上的特定文本

如何从 Node.js 中的 jwt 令牌获取 user.id?

如何从node.js中的mysql获取最近添加的重新编码ID

从 twitter 获取关注者是不是有任何限制

如何从 iOS 应用程序中的 Node.js 服务器获取响应?

如何从给定 ID 获取用户信息并使用 Node.js 和 EJS 显示它[关闭]