Sto utilizzando nodo, Express e passaporto con l'autenticazione di Facebook.
Ho i seguenti percorsi (quando /facebook/auth/callback
è l'URL di callback):errore di autenticazione del passaporto che porta al ciclo di reindirizzamento
function render(page, req, res) {
var user = null;
if (req.user) {
user = req.user.toObject();
user.isLoggedIn = true;
}
res.render(page, { user: user });
}
app.get('/auth-failure', function (req, res) {
res.render('auth-failure');
});
app.get('/auth-success', function (req, res) {
render('auth-success', req, res);
});
app.get('/facebook/auth', passport.authenticate('facebook', { scope: [ 'email', 'user_about_me', 'publish_actions']}));
app.get('/facebook/auth/callback', passport.authenticate('facebook', { failureRedirect: '/auth-failure', successRedirect: '/auth-success' }));
Quando l'autenticazione è riuscita ho avuto la visualizzazione della pagina auth-success
come mi aspettavo. Ma quando l'autenticazione non è riuscita e ritorna facebook a: http://localhost:3000/facebook/auth/callback?error_code=2102&error_message=User+is+not+a+test+user+owned+by+the+application#=
non ottengo la vista auth-failure
! Invece, firefox mi restituisce la pagina:
Durante l'esecuzione in cromo, ottengo il messaggio:
Cerco di controllare le cose e ho sostituire il router mancata:
app.get('/facebook/auth/callback', function (req, res) {
res.redirect('/auth-failure');
});
E ciò ha reso la vista auth-failure
riuscita.
Qual è il problema con l'autenticazione fallita di passport.js facebook?
Perché mi restituisce quella pagina di errore?
Riguardo a @ Matt Bakaitis commento:
Ecco me serializzare e deserializzare funzioni:
// serialize sessions
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findOne({ _id: id }, function (err, user) {
done(err, user);
});
});
Sembra di esempio opere in Firefox però. – jhtong
@toiletfreak: ho allegato l'immagine di questo comportamento errato in Firefox. – Naor
Hai modificato il codice passport.serialize o passport.deserialize? –