let passport = require('koa-passport');
let FacebookStrategy = require('passport-facebook');
let Router = require('koa-router');
const router = module.exports = new Router();
let oauthed = (accessToken, refreshToken, profile, done) => {
if(!profile.emails || !profile.emails.length)
done(null, false);
done(null, profile);
};
let facebookStrategy = new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL,
profileFields: config.facebook.profileFields,
}, oauthed);
passport.use(facebookStrategy);
router.all('/facebook/oauth', passport.authenticate('facebook', { authType: 'rerequest', scope: ['email', 'public_profile'] }));
/** WORKING **/
router.all('/facebook/oauthed', passport.authenticate('facebook', { /*successRedirect: '/api/auth/success',*/ failureRedirect: '/api/auth/failure', session: false }), function *(next){
this.body = this.passport.user;
});
/** NOT WORKING **/
router.all('/facebook/oauthed', passport.authenticate('facebook', { successRedirect: '/api/auth/success', failureRedirect: '/api/auth/failure', session: false }));
router.all('/success', function *(ctx, next) {
//no user object anywhere, just undefined and nulls around here!
this.body = [this.request.user, this.passport.user, this.req.user, this.user, ctx.user];
});