Node.js ntwitter登录Twitter问题

时间:2012-08-09 22:40:11

标签: node.js twitter-oauth

我正在尝试使用node.js ntwitter包实现登录。

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以便他们可以登录?
  4. 我可能会偏离这里,但你可以随意提出更好的方法。我真的很想坚持使用ntwitter。

    感谢。

2 个答案:

答案 0 :(得分:1)

想出来了。

2个基本问题

  1. 对'句柄'的调用导致参数无序

    最初我有

  2.   

    TLOG(RES,REQ,NULL);

    这应该是

      

    TLOG(RES,REQ,NULL);

    2 ..我在twitter_login的末尾渲染了一个模板文件         导致重定向问题

    ==

    回答原始问题

    ntwitter函数返回一个名为'handle'的命名函数。为什么命名?调用它的最佳方式是什么?

    命名可能会更容易在调用堆栈中看到

    可以这样称呼

    twit.login(path.pathname, “/ twitter_callback”)(REQ,RES)

    为什么登录分两个阶段进行?为什么不只是一个登录功能?

    它们捆绑在一起,但第二次调用允许更惯用的方式传递必要的信息。

    最重要的是:如何让我的用户重定向到Twitter以便他们可以登录?

    我创建了一个包含工作示例应用程序的github仓库。

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

答案 1 :(得分:0)

我和ntwitter也遇到了麻烦。但是,在查看Twitter的API后,我决定不尝试自己的包装器

所以,我通过正常的重定向到Twitter的过程让OAuth工作,然后让我的回调页面获取访问令牌。一旦你有了令牌&amp;他们通过你的秘密,你可以使用这样的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) {
    // ...
});

希望有所帮助。