Мне сложно проверить, но я бы попробовал вернуть ваш вызов на passport.authorize
, поскольку именно это в основном и происходит в случае 1.
Как вы прокомментировали, трюк получает next
стрелять в нужное время.(И не забудьте позвонить next()
в другом предложении.)
Редактировать:
Я сделал еще один выстрел, завернув его во IIFE.Надеясь, что это повторяет то, что происходит в вашем случае 1.
auth.get(
`/callback/${strategy.name}`,
// primary difference here: wrapping passport.authorize in function
function(req, res, next){
if (strategy.name == 'google') {
(passport.authorize(strategy.name, {
failureRedirect: '/error',
successRedirect: '/users/me'
})(req, res, next)
}
else next() // ??
},
callback.bind(null, strategy)
)