0

我正在尝试使用 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。

谢谢。

4

2 回答 2

1

想通了。

2 基本问题

  1. 对“句柄”的调用使参数乱序

    本来我有

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

于 2012-08-13T16:52:42.863 回答
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) {
    // ...
});

希望有帮助。

于 2012-08-09T22:47:09.453 回答