带有tumblr oauth的Node.js请求模块:oauth签名不';不匹配

带有tumblr oauth的Node.js请求模块:oauth签名不';不匹配,node.js,oauth,tumblr,Node.js,Oauth,Tumblr,我正在编写一个web应用程序,它从各种网络(如twitter、tumblr等)获取内容。请查看以下代码: User.prototype.tumblr_authenticate_url = function(callback) { var oauth = { consumer_key: config.tumblr.tumblr_consumer_key, consumer_secret: config.tumblr.tumblr_consumer_secret }; request

我正在编写一个web应用程序,它从各种网络(如twitter、tumblr等)获取内容。请查看以下代码:

User.prototype.tumblr_authenticate_url = function(callback) {
var oauth = {
    consumer_key: config.tumblr.tumblr_consumer_key,
    consumer_secret: config.tumblr.tumblr_consumer_secret
};
request.post({url:'http://www.tumblr.com/oauth/request_token', oauth:oauth}, function (e, r, body) {            
    if(e)
        return callback(e);
    var access_token = qs.parse(body);

    if(!access_token || typeof(access_token.oauth_token) == 'undefined' || typeof(access_token.oauth_token_secret) == 'undefined')
        return callback(1);
    return callback(null,{
        url : 'http://www.tumblr.com/oauth/authorize?oauth_token=' + access_token.oauth_token,
        oauth_token : access_token.oauth_token,
        oauth_token_secret : access_token.oauth_token_secret});
});
};

User.prototype.tumblr_access_token = function(token,verifier,callback) {
var _oauth = {
    consumer_key: config.tumblr.tumblr_consumer_key,
    consumer_secret: config.tumblr.tumblr_consumer_secret
};
_oauth.token = token;
_oauth.verifier = verifier;
request.post({url:'http://www.tumblr.com/oauth/access_token', oauth:_oauth}, function (e, r, body) {
    if(e)
        return callback(e);
    var user_details = qs.parse(body);
    console.log(body);
    if(!user_details || typeof(user_details.oauth_token)=='undefined' || typeof(user_details.oauth_token_secret)=='undefined' )
        return callback(1);

    return callback(null,{
        oauth_token : user_details.oauth_token,
        oauth_token_secret : user_details.oauth_token_secret});
});
};
现在,tumblr_认证url部分工作得很好。它成功地获取了请求令牌,我得到了一个正确的身份验证页面。但是,当我从重定向的url复制参数并使用tumblr\u access\u令牌函数尝试它们时,我得到

oauth_signature [xxxx] does not match expected value [yyy]
在响应正文中。

我在twitter上使用了完全相同的代码,这非常有效。我想知道我是否对代码做了任何错误,或者tumblr oauth的工作方式是否稍有不同,它是否以不同的方式接受参数。据我所知,twitter和tumblr使用相同的签名算法HMAC-SHA1

我最终使用passport和passport tumblr npm模块来解决这个问题。我认为tumblr可能对oauth使用稍微不同的方法,因此相同的代码可能不起作用