无法在Nodejs中获取Tumblr API OAuth请求令牌

时间:2015-05-25 19:09:15

标签: node.js oauth tumblr

我很难通过Node连接到Tumblr API。 它甚至没有向我显示request_tokens让我继续

var OAuth = require('oauth').OAuth
var oa = new OAuth(
  "http://www.tumblr.com/oauth/request_token",
  "http://www.tumblr.com/oauth/access_token",
  tumblrClientId,
  tumblrClientSecret,
  "1.0A",
  tumblrCallback,
  "HMAC-SHA1"
);

 oa.getOAuthRequestToken(
      function(error, oauth_token, oauth_token_secret, results) {
        if (error) {
          console.log(error);
          res.send("Authentication Failed!");

        }
        else {

          data = {
            token: oauth_token,
            token_secret: oauth_token_secret
          };
          console.log("OAuthToken"+data.oauth_token);
          console.log("OAuthTokenSecret"+data.oauth_token_secret);


        }
      }
    );

我的console.log语句的输出是:    {}

1 个答案:

答案 0 :(得分:0)

对于所谓的authorization_code授权类型(网络应用OAuth流程),最好使用更复杂的东西,只有裸oauth模块。

您可以使用Grant即Express,Koa和Hapi的OAuth中间件,它也支持Tumblr。

所以基本上你的代码看起来像这样(如果你使用的是Express):

var express = require('express')
  , session = require('express-session')
var Grant = require('grant-express')
  , grant = new Grant({
  server:{host:'localhost:3000', protocol:'http'}
  tumblr:{
    key:'[CONSUMER_KEY]',
    secret:'[CONSUMER_SECRET]',
    callback:'/handle_tumblr_callback'
  }
})

var app = express()
app.use(session({secret:'keyboard cat'}))
// mount grant
app.use(grant)
// other middlewares ...

对于OAuth应用中的redirect_uri,您应该设置http://localhost:3000/connect/tumblr/callback

一般来说,OAuth有一个lengthy article,以及如何使用Grant。可以找到更多示例here