2015-05-25 101 views
0

我很難嘗試通過Node連接到Tumblr API。 它甚至沒有向我展示request_tokens我繼續無法在Nodejs中獲取Tumblr API OAuth請求令牌

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報表的輸出是: {}

回答

0

對於所謂的authorization_code補助類型(Web應用程序的OAuth流) ,最好使用更復雜的東西,只需要裸機oauth模塊。

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

所以基本上你的代碼可能是這樣的(在您使用快遞的情況下):

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

有一個lengthy article瞭解OAuth一般以及如何使用格蘭特。更多的例子可以發現here

相關問題