Created
November 28, 2011 00:53
-
-
Save bnoguchi/1398623 to your computer and use it in GitHub Desktop.
Everyauth GH-113
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = { | |
fb: { | |
appId: 'your fb app id', | |
appSecret: 'your fb app secret' | |
} | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var conf = require('./conf'); | |
var fbId= conf.fb.appId; | |
var fbSecret= conf.fb.appSecret; | |
var fbCallbackAddress= "/signin"; // this could point to your /signin page | |
var cookieSecret = "co"; | |
var express= require('express'); | |
var everyauth= require('everyauth'); | |
everyauth.debug = true; | |
var mongoose = require('mongoose'); | |
var app = express.createServer(); | |
mongoose.connect('mongodb://localhost/GH-113'); | |
Schema = mongoose.Schema; | |
ObjectId = Schema.ObjectId; | |
var UserSchema = new Schema({ | |
//id is the facebook id, intrinsincly unique | |
fbid : Number, | |
firstName : String, | |
lastName : String, | |
email : String, | |
joinDate : {type: Date, default: Date.now} | |
}); | |
var User = mongoose.model('User', UserSchema); | |
everyauth.helpExpress(app); | |
everyauth.facebook | |
.appId(fbId) | |
.appSecret(fbSecret) | |
.logoutPath('/logout') | |
.logoutRedirectPath('/') | |
.handleAuthCallbackError( function (req, res) { | |
//Define here for routing in case user decline app | |
}) | |
.findOrCreateUser( function (session, accessToken, accessTokExtra, fbUserMetadata) { | |
//Verifies if user in database already | |
var id = fbUserMetadata.id; | |
var promise = this.Promise(); | |
User.findOne({ fbid: id}, function(err, user) { | |
if (err) return promise.fail(err); | |
if (user) return promise.fulfill(user); | |
User.create({ fbid: id, firstName: fbUserMetadata.first_name, lastName: fbUserMetadata.last_name}, function (err, user) { | |
if (err) return promise.fail(err); | |
promise.fulfill(user); | |
}); | |
}); | |
return promise; | |
}) | |
.redirectPath('/logged'); | |
app.configure(function(){ | |
app.use(express.static(__dirname + '/public')); | |
app.use(express.bodyParser()); | |
app.use(express.methodOverride()); | |
app.use(express.cookieParser()); | |
app.use(express.session({secret: cookieSecret})); | |
app.use(everyauth.middleware()); | |
app.use(express.favicon()); | |
}); | |
app.get('/', function(req, res) { | |
res.send("<a href='/auth/facebook'>Log in via everyauth/facebook</a>"); | |
}); | |
app.get('/logged', function(req, res){ | |
console.log(req.loggedIn); | |
if(req.loggedIn) return res.send(JSON.stringify(req.loggedIn)); | |
return res.send(JSON.stringify(req.loggedIn)); | |
}); | |
app.listen(3000); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"author": "", | |
"name": "GH-113", | |
"version": "0.2.26-30-gcd8d4b2", | |
"repository": { | |
"url": "" | |
}, | |
"engines": { | |
"node": "~0.6.3" | |
}, | |
"dependencies": { | |
"mongoose": "*", | |
"everyauth": "*", | |
"express": "*" | |
}, | |
"devDependencies": {} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment