Skip to content

Instantly share code, notes, and snippets.

@bnoguchi
Created November 28, 2011 00:53
Show Gist options
  • Save bnoguchi/1398623 to your computer and use it in GitHub Desktop.
Save bnoguchi/1398623 to your computer and use it in GitHub Desktop.
Everyauth GH-113
module.exports = {
fb: {
appId: 'your fb app id',
appSecret: 'your fb app secret'
}
};
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);
{
"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