2012-08-09 38 views
0

我想用twitter實現登錄使用node.js ntwitter包。Node.js ntwitter登錄與twitter問題

https://github.com/AvianFlu/ntwitter

我能夠做出的API調用,如果我正確的硬編碼我的憑據,但我似乎無法獲得身份驗證工作的OAuth請求。

我正在使用Express.js。我只是試圖讓一個初始的「玩具」例如工作,所以我剛剛創建在這一點上一個單獨的路線,我直接訪問

app.get('/twitter_login', function(req, res){ 
var twitter = require('ntwitter'); 
var twit = new twitter({ 
    consumer_key: '<Valid Consumer Key>', 
    consumer_secret: '<Valid Consumer Secret'}); 
var tlog = twit.login(req,"/login_success"); 
tlog(res,req,null); //Not sure on this at all 

現在我收到錯誤

DEBUG: TypeError: Parameter 'url' must be a string, not undefined 
    at Object.urlParse [as parse] (url.js:96:11) 
    at handle (/usr/local/lib/node_modules/ntwitter/lib/twitter.js:341:20) 
    at <my app path>/app.js:47:3 

我有幾個問題

  1. ntwitter函數返回一個名爲'handle'的命名函數。爲什麼命名?叫它的最好方法是什麼?
  2. 爲什麼登錄分兩階段完成?爲什麼不只是一個登錄功能?
  3. 最重要的是:如何讓我的用戶重定向到Twitter,以便他們可以登錄?

我可能在這裏偏離軌道,但隨時提出更好的方法。不過,我真的很想堅持使用ntwitter。

謝謝。

回答

1

想通了。

2個根本性問題

  1. 調用到 '把手' 有PARAMATERS無序

    我原本

TLOG(RES,REQ,空) ;

這應該是

TLOG(RES,REQ,NULL);

2 ..我在twitter_login的結束,這 是造成與重定向

======問題渲染一個模板文件

要回答原來的問題

的ntwitter函數返回一個命名函數稱爲「手柄」。爲什麼命名?叫它的最好方法是什麼?

命名可能更容易在調用堆棧看到

它可以被稱爲例如

twit.login(path.pathname, 「/ twitter_callback」)(REQ,RES)

爲什麼登錄分兩階段完成?爲什麼不只是一個登錄功能?

它們並排在一起,但第二次調用允許以更習慣的方式傳遞必要的信息。

最重要的是:我如何讓我的用戶重定向到Twitter,以便他們可以登錄?

我創建了一個包含工作示例應用程序的github回購協議。

https://github.com/drouillard/sample-ntwitter

0

我在使用ntwitter時遇到了麻煩。但是,在查看Twitter的API之後,我決定不嘗試自己的包裝

因此,通過執行正常的重定向到Twitter的過程,然後讓我的回調頁面獲取訪問令牌,我得到了OAuth的工作。一旦你的令牌&祕密,他們與你擦肩而過,你可以使用ntwitter這樣的:

var ntwitter = require('ntwitter'); 
var twit = new ntwitter({ 
    consumer_key: clientId, 
    consumer_secret: secret, 
    access_token_key: token, 
    access_token_secret: tokenSecret  
}) 

// now you can do something like: 
twit.getUserTimeline({ 
    include_rts: 1, 
    count: 50 
}, function(err, json) { 
    // ... 
}); 

希望有所幫助。

+0

嘿馬歇爾,感謝您的快速反應!這似乎是合理的,在這一點上可能是我最終做的。我感覺有一些基本上簡單的東西,我只是沒有得到,因爲我只需要令牌密鑰/祕密,並且ntwitter似乎具有用於此目的的登錄功能。如果我採用你建議的方法,我會接受這個答案。 – 2012-08-09 23:12:57