I am a Passport for user authentication in an ExpressJS application. I try to host all Facebook routes in my own module because I intend to support other OAuth providers. At the beginning of the script, I defined the required FB endpoints:
var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var facebook = require('./routes/facebook'); var login = require('./routes/login'); var http = require('http'); var path = require('path'); var app = express();
As you can see, I need my facebook module, which contains the actual routes, and Facebook the callback. It looks like this:
var passport = require('passport') , FacebookStrategy = require('passport-facebook').Strategy , User = require('../services/user'); passport.use(new FacebookStrategy({ clientID: 'myclientid', clientSecret: 'mysecretkey', callbackURL: "http://localhost:3000/auth/facebook/callback" //localhost:3000 domain is registered domain in fb }, function(accessToken, refreshToken, profile, done) { console.log('verify') User.findOrCreate(profile, function(err, user){ if(err) return done(err); done(null, user); }); } )); // Redirect the user to Facebook for authentication. When complete, // Facebook will redirect the user back to the application at // /auth/facebook/callback exports.fb_auth = function(req, res){ passport.authenticate('facebook') }; // Facebook will redirect the user to this URL after approval. Finish the // authentication process by attempting to obtain an access token. If // access was granted, the user will be logged in. Otherwise, // authentication has failed. exports.fb_callback = function(req, res){ console.log('callback') passport.authenticate('facebook', { successRedirect: '/', failureRedirect: '/login' }); };
I can see (logging to stdout) that fb_auth is being called, but the callback verification function defined above is never. Am I missing something? Is there an error that I can capture?
Thanks!
source share