【问题标题】:Fetch the data from twitter user timeline in node.js从 node.js 中的 twitter 用户时间轴获取数据
【发布时间】:2020-01-02 11:37:22
【问题描述】:

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

{ 错误:[ { 代码:32,消息:'无法验证您。' } ] }

以下是我的代码的 sn-p,任何帮助都会非常明显

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);
});

【问题讨论】:

    标签: node.js twitter


    【解决方案1】:

    我找到了解决方案。请检查下面的代码。我们可以使用节点模块“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);
    

    【讨论】:

      猜你喜欢
      • 2013-06-11
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 2011-11-11
      • 2014-09-30
      • 2019-06-30
      相关资源
      最近更新 更多