1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | var express = require('express'); var util = require('util'); var oauth = require('oauth'); var http = require('http'); var cookieParser = require('cookie-parser'); var session = require('express-session'); var errorHandler = require('errorhandler'); var logger = require('morgan'); var app = express(); var server = http.createServer(app); // Get your credentials here: https://dev.twitter.com/apps var _twitterConsumerKey = "YOUR TWITTER CONSUMER KEY"; var _twitterConsumerSecret = " YOUR TWITTER CONSUMER SECRET"; var consumer = new oauth.OAuth( "https://twitter.com/oauth/request_token", "https://twitter.com/oauth/access_token", _twitterConsumerKey, _twitterConsumerSecret, "1.0A", "http://127.0.0.1:8080/sessions/callback", "HMAC-SHA1"); app.use(errorHandler({ dumpExceptions: true, showStack: true })); app.use(logger()); app.use(cookieParser()); app.use(session({ secret: "very secret" })); app.use(function(req, res, next){ var err = req.session.error, msg = req.session.success; delete req.session.error; delete req.session.success; res.locals.message = ''; if (err) res.locals.message = '<p class="msg error">' + err + '</p>'; if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>'; next(); }); app.get('/sessions/connect', function(req, res){ consumer.getOAuthRequestToken( function(error, oauthToken, oauthTokenSecret, results){ if (error) { res.send("Error getting OAuth request token : " + util.inspect(error), 500); } else { req.session.oauthRequestToken = oauthToken; req.session.oauthRequestTokenSecret = oauthTokenSecret; res.redirect("https://twitter.com/oauth/authorize?oauth_token="+req.session.oauthRequestToken); console.log( 'get sessions connect' ); } }); }); app.get('/sessions/callback', function(req, res){ util.puts(">>"+req.session.oauthRequestToken); util.puts(">>"+req.session.oauthRequestTokenSecret); util.puts(">>"+req.query.oauth_verifier); consumer.getOAuthAccessToken( req.session.oauthRequestToken, req.session.oauthRequestTokenSecret, req.query.oauth_verifier, function(error, oauthAccessToken, oauthAccessTokenSecret, results) { if (error) { res.send("Error getting OAuth access token : " + util.inspect(error) + "["+oauthAccessToken+"]"+ "[" +oauthAccessTokenSecret + "]" + "[" + util.inspect(results)+"]", 500); } else { req.session.oauthAccessToken = oauthAccessToken; req.session.oauthAccessTokenSecret = oauthAccessTokenSecret; console.log( 'get sessions callback' ); res.redirect('/home'); } }); }); var tAPI = "https://api.twitter.com/1.1/account/verify_credentials.json"; app.get('/home', function(req, res){ consumer.get( tAPI, req.session.oauthAccessToken, req.session.oauthAccessTokenSecret, function (error, data, response) { if (error) { console.log( 'error\n' ); console.log( error ); res.redirect('/sessions/connect'); } else { var parsedData = JSON.parse(data); console.log( parsedData ); res.send('You are signed in: ' + parsedData.screen_name); } }); }); app.get('*', function(req, res){ res.redirect('/home'); }); app.listen(8080); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | app.get('/profilewords.html', function(req, res){ var twitterVerification = "https://api.twitter.com/1.1/account/verify_credentials.json"; var token = req.session.oauthAccessToken; var secret = req.session.oauthAccessTokenSecret; consumer.get( twitterVerification, token, secret, function (error, data, response) { if( error ){ console.log( 'Twitter verification error\n' ); console.log( error ); res.redirect('/sessions/connect'); } else { var parsedData = JSON.parse(data); var person = ( {'name':parsedData.screen_name, 'oauth_access_token': req.session.oauthAccessToken, 'oauth_access_token_secret': req.session.oauthAccessTokenSecret } ); var collection = followersDatabase.collection( 'tokens' ); collection.remove( { 'name':parsedData.screen_name }, errorHandler ); collection.insert( person, {safe:true}, errorHandler ); res.sendfile('profilewords.html'); } }); }); |
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |