Skip to content

Instantly share code, notes, and snippets.

@tiagoeborsanyi
Created August 30, 2016 01:44
Show Gist options
  • Save tiagoeborsanyi/f6611fb7ae821765dcf5d9064640a742 to your computer and use it in GitHub Desktop.
Save tiagoeborsanyi/f6611fb7ae821765dcf5d9064640a742 to your computer and use it in GitHub Desktop.
Servidor:
passport.js
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var mongoose = require('mongoose');
var configAuth = require('./auth');
module.exports = () => {
var Usuario = require('../app/models/usuario');
passport.use(new FacebookStrategy({
clientID: configAuth.facebookAuth.clientID,
clientSecret: configAuth.facebookAuth.clientSecret,
callbackURL: configAuth.facebookAuth.callbackURL
},
function (accessToken, refreshToken, profile, done) {
//console.log('profile: ', profile);
process.nextTick(() => {
Usuario.findOne({'facebook.id': profile.id}, (err, usuario) => {
if (err) return done(err);
if (usuario) {
//console.log('user: ', user);
return done(null, usuario);
} else {
var usuario = new Usuario();
usuario.facebook.id = profile.id;
usuario.facebook.token = accessToken;
usuario.facebook.name = profile.displayName;
usuario.facebook.email = 'email';
usuario.save((err) => {
if (err) throw err;
return done(null, usuario);
});
}
});
});
}
));
passport.serializeUser(function(user, done){
done(null, user._id);
});
passport.deserializeUser(function(id, done){
Usuario.findById(id).exec()
.then(function(user){
done(null, user);
});
});
}
express.js
'use strict';
let express = require('express');
let bodyParser = require('body-parser');
let cors = require('cors');
let cookieParser = require('cookie-parser');
let session = require('express-session');
let MongoStore = require('connect-mongo/es5')(session);
let passport = require('passport');
let load = require('express-load');
require('./passport')(passport);
module.exports = () => {
let app = express();
//configurar a porta em que o express irá rodar
app.set('port', 3000, "127.0.0.1");
//configura como os dados são transitados entres servidor e cliente
app.use('*', cors());
app.use(cookieParser());
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(require('method-override')());
app.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true,
store: new MongoStore({ url: 'mongodb://tiagoeborsanyi:tigo2605@ds153815.mlab.com:53815/mapas', autoReconnect: true })
}));
app.use(passport.initialize());
app.use(passport.session());
load('models', {cwd: 'app'})
.then('controllers')
.then('routes')
.into(app);
return app;
};
/routes/viagens.js
'use strict';
function verificaAutenticacao(req, res, next){
if(req.isAuthenticated()){
return next();
}else{
res.status('401').json('não autorizado');
}
};
module.exports = (app) => {
let controller = app.controllers.viagens;
app.route('/api/viagens')
.get(controller.listaViagensHome)
.post(verificaAutenticacao, controller.salvaViagem);
}
CLIENTE (usando vuejs):
src/auth.js
export default {
api:{
url: 'http://localhost:3000/'
},
user: {
authenticated: false
},
login (context) {
context.$http.get('http://localhost:3000/v1/success').then((data) => {
console.log('PASSPORT: ', data)
localforage.setItem('verdadeiro', data.data.facebook.name).then((result) => {
console.log(result)
}).catch((err) => {
console.log(err);
})
this.user.authenticated = true
console.log(this.user.authenticated)
//this.user = data.data.facebook.name
}, (err) => console.log('erro passport: ', err))
},
logout () {
localforage.removeItem('verdadeiro').then((result) => {
console.log('token removido')
}).catch((err) => {
console.log(err);
})
},
checkAuth () {
}
} //final da funcao export
////resource que mando para minha API gravar
this.$http.post('http://localhost:3000/api/viagens', viagemObjt).then((response) => {
console.log(response);
}, (err) => console.log(err));
}, (err) => console.log(err));
@albertosouza
Copy link

@tiagoeborsanyi está retornando erro na linha 111 ?

Não ví erros no código e a unica diferença do meu é que uso a config de session: true

ex: https://github.com/wejs/we-plugin-passport-facebook/blob/master/plugin.js#L13

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment