我正在尝试使用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
我有几个问题
我可能会偏离这里,但你可以随意提出更好的方法。我真的很想坚持使用ntwitter。
感谢。
答案 0 :(得分: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仓库。
答案 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) {
// ...
});
希望有所帮助。