Mam paszport do uwierzytelniania użytkowników w aplikacji ExpressJS. Próbuję umieścić wszystkie trasy na Facebooku we własnym module, ponieważ zamierzam wspierać innych dostawców OAuth. W moim skryptu startowego Mam zdefiniowane wymaganych punktów końcowych FB:Uwierzytelnianie za pomocą Facebooka za pomocą usługi Passport i ExpressJS - Dlaczego weryfikacja oddzwaniania nie jest wywoływana?
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();
/* Configuration stuff here*/
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
app.get('/login', login.index);
app.get('/auth/facebook', facebook.fb_auth);
app.get('/auth/facebook/callback', facebook.fb_callback);
Jak widać jestem wymagająca mój moduł „facebook”, który zawiera aktualne trasy i Facebooka zweryfikowania zwrotnego. Wygląda to tak:
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' });
};
widzę (logowanie do stdout), który fb_auth nazywa się jednak zweryfikować funkcja zwrotna określone powyżej nie jest. Czy coś przeoczyłem? Czy jest jakiś błąd, który mógłbym uchwycić?
Dzięki!
paszport.authenticate jest oprogramowaniem pośredniczącym. Możesz to uprościć, eksportując je bezpośrednio: 'exports.fb_auth = passport.authenticate ('facebook');' i podobnie dla wywołania zwrotnego. –
@JaredHanson Good Call. Dzięki. – Nick