Twitter Login authentication

pull/2/head
Sahat Yalkabov 2013-12-02 19:16:27 -05:00
parent d2b60b64c1
commit cab3e31e3f
3 changed files with 32 additions and 9 deletions

3
app.js
View File

@ -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', passport.authenticate('google', { scope: 'profile email' }));
app.get('/auth/google/callback', passport.authenticate('google', { successRedirect: '/', failureRedirect: '/login' })); 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', api.foursquareAuth);
app.get('/auth/foursquare/callback', api.foursquareCallback); app.get('/auth/foursquare/callback', api.foursquareCallback);

View File

@ -1,6 +1,7 @@
var passport = require('passport'), var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy, LocalStrategy = require('passport-local').Strategy,
FacebookStrategy = require('passport-facebook').Strategy, FacebookStrategy = require('passport-facebook').Strategy,
TwitterStrategy = require('passport-twitter').Strategy,
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy, GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
User = require('../models/User'), User = require('../models/User'),
config = require('./config.json'); config = require('./config.json');
@ -40,17 +41,10 @@ passport.use(new FacebookStrategy({
callbackURL: config.facebook.callbackUrl || "http://localhost:8000/auth/facebook/callback" callbackURL: config.facebook.callbackUrl || "http://localhost:8000/auth/facebook/callback"
}, },
function (accessToken, refreshToken, profile, done) { function (accessToken, refreshToken, profile, done) {
console.log(profile);
User.findOne({ facebook: profile.id }, function(err, existingUser) { User.findOne({ facebook: profile.id }, function(err, existingUser) {
if (err) done(err);
if (err) { if (existingUser) return done(null, existingUser);
done(err);
}
if (existingUser) {
return done(null, existingUser);
}
var user = new User({ var user = new User({
firstName: profile.name.givenName, firstName: profile.name.givenName,
@ -65,7 +59,32 @@ passport.use(new FacebookStrategy({
if (err) console.log(err); if (err) console.log(err);
done(null, user); 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);
});
}); });
} }
)); ));

View File

@ -14,6 +14,7 @@
"passport": "*", "passport": "*",
"passport-local": "*", "passport-local": "*",
"passport-facebook": "*", "passport-facebook": "*",
"passport-twitter": "*",
"passport-google-oauth": "*", "passport-google-oauth": "*",
"sendgrid": "*", "sendgrid": "*",
"tumblrwks": "*", "tumblrwks": "*",