diff --git a/app.js b/app.js index f5c2e84586..70568095a0 100755 --- a/app.js +++ b/app.js @@ -66,6 +66,9 @@ app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRe app.get('/auth/google', passport.authenticate('google', { scope: 'profile email' })); app.get('/auth/google/callback', passport.authenticate('google', { successRedirect: '/', failureRedirect: '/login' })); +app.get('/auth/twitter', passport.authenticate('twitter')); +app.get('/auth/twitter/callback', passport.authenticate('twitter', { successRedirect: '/', failureRedirect: '/login' })); + app.get('/auth/foursquare', api.foursquareAuth); app.get('/auth/foursquare/callback', api.foursquareCallback); diff --git a/config/passport.js b/config/passport.js index ad25bac1f5..d183375bd5 100755 --- a/config/passport.js +++ b/config/passport.js @@ -1,6 +1,7 @@ var passport = require('passport'), LocalStrategy = require('passport-local').Strategy, FacebookStrategy = require('passport-facebook').Strategy, + TwitterStrategy = require('passport-twitter').Strategy, GoogleStrategy = require('passport-google-oauth').OAuth2Strategy, User = require('../models/User'), config = require('./config.json'); @@ -40,17 +41,10 @@ passport.use(new FacebookStrategy({ callbackURL: config.facebook.callbackUrl || "http://localhost:8000/auth/facebook/callback" }, function (accessToken, refreshToken, profile, done) { - console.log(profile); - User.findOne({ facebook: profile.id }, function(err, existingUser) { + if (err) done(err); - if (err) { - done(err); - } - - if (existingUser) { - return done(null, existingUser); - } + if (existingUser) return done(null, existingUser); var user = new User({ firstName: profile.name.givenName, @@ -65,7 +59,32 @@ passport.use(new FacebookStrategy({ if (err) console.log(err); done(null, user); }); + }); + } +)); +// TWITTER OAUTH2 LOGIN +passport.use(new TwitterStrategy({ + consumerKey: config.twitter.clientId, + consumerSecret: config.twitter.clientSecret, + callbackURL: '/auth/twitter/callback' + }, + function(token, tokenSecret, profile, done) { + User.findOne({ facebook: profile.id }, function(err, existingUser) { + if (err) done(err); + if (existingUser) return done(null, existingUser); + console.log(profile); + var user = new User({ + username: profile.username, + displayName: profile.displayName, + photo: profile.photos[0].value, + provider: profile.provider, + }); + user[profile.provider] = profile.id; + user.save(function(err) { + if (err) console.log(err); + done(null, user); + }); }); } )); diff --git a/package.json b/package.json index 9c2fb2b432..b64853b09f 100755 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "passport": "*", "passport-local": "*", "passport-facebook": "*", + "passport-twitter": "*", "passport-google-oauth": "*", "sendgrid": "*", "tumblrwks": "*",