1

我是 nodejs 的新手,实际上我需要使用 twitter API 进行 twitter 登录,我一直在使用这个示例http://moonlitscript.com/post.cfm/how-to-use-oauth-and-twitter-in -your-node-js-expressjs-app/所以,在花了一些时间尝试为我理解玉和所有这些新的小东西之后,我设法写了一些东西,但是我不知道我应该如何发送信息我的登录页面到处理 twitter 登录过程的方法。有没有人可以帮助我指出正确的方向?提前致谢。

这是我的代码

应用程序.js

var express = require('express')
  , routes = require('./routes')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , OAuth= require('oauth').OAuth;

var app = express();

var oa = new OAuth(
"https://api.twitter.com/oauth/request_token",
"https://api.twitter.com/oauth/access_token",
"occcccccccc",
"fccccccccccccccccccccccccc",
"1.0",
"http://ccccccccccccc.c9.io/",
"HMAC-SHA1"
);

 app.get('/auth/twitter', function(req, res){
    oa.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results){
    if (error) {
        console.log(error);
        res.send("yeah no. didn't work.")
    }
    else {
        req.session.oauth = {};
        req.session.oauth.token = oauth_token;
        console.log('oauth.token: ' + req.session.oauth.token);
        req.session.oauth.token_secret = oauth_token_secret;
        console.log('oauth.token_secret: ' +    req.session.oauth.token_secret);
        res.redirect('https://twitter.com/oauth/authenticate? oauth_token='+oauth_token)
}
});
});

app.get('/auth/twitter/callback', function(req, res, next){
if (req.session.oauth) {
    req.session.oauth.verifier = req.query.oauth_verifier;
    var oauth = req.session.oauth;

    oa.getOAuthAccessToken(oauth.token,oauth.token_secret,oauth.verifier, 
    function(error, oauth_access_token, oauth_access_token_secret, results){
        if (error){
            console.log(error);
            res.send("yeah something broke.");
        } else {
            req.session.oauth.access_token = oauth_access_token;
            req.session.oauth,access_token_secret =      oauth_access_token_secret;
            console.log(results);
            res.send("worked. nice one.");
        }
    }
    );
} else
    next(new Error("you're not supposed to be here."))
});



app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.get('/', function(req, res){
    res.render('index');
});

app.post('/', function(req,res){
  console.log(req.body);
})

app.configure('development', function(){
  app.use(express.errorHandler());
});

app.get('/', routes.index);

//http.createServer(app).listen(app.get('port'), function(){
 //  console.log("Express server listening on port " + app.get('port'));
 //});

app.listen(process.env.PORT, process.env.IP, function() {
  console.log("Listening on " + app.get('port'));
});

索引.jade

   form(name="input", action="/auth/twitter", method="get")
  |Username:
  input(type="text", name="user")
  |Password:
  input(type="password", name="pswd")
  input(type="submit", value="Submit")
4

0 回答 0