Я использую фреймворк Hapi (nodejs) с модулем Bell, работая с провайдером Twitter.
Было довольно просто получить рабочий код с примером, приведенным на странице github. Я получаю доступ к маршруту /login, и меня перенаправляют в Twitter, где я авторизую приложение, а затем меня перенаправляют обратно на /login?oauth_token=xxxxxxx&oauth_verifier=xxxxxxx, где я может иметь доступ к профилю пользователя в request.auth.credentials.
Проблема возникла, когда я попытался отклонить приложение. Вместо нажатия кнопки «Войти» в Твиттере я нажал кнопку «Отмена», а затем кнопку «Вернуться на название сайта». Эта последняя кнопка перенаправляет меня на /login?denied=xxxxxx, а затем я (снова) перенаправляюсь в Twitter, чтобы одобрить приложение.
Я попытался обработать этот сценарий, используя другой пример на той же странице https://github.com/hapijs/bell#handling-errors, но не могу заставить его работать.
server.route({
method: ['GET', 'POST'],
path: '/login',
config: {
auth: {
strategy: 'twitter',
mode: 'try'
},
handler: function (request, reply) {
if (!request.auth.isAuthenticated) {
return reply('Authentication failed due to: ' + request.auth.error.message);
}
return reply.redirect('/home');
}
}
});
Похоже, перед проверкой request.auth он интерпретирует маршрут /login и перенаправляет в Twitter. Я все еще не очень хорошо понимаю модуль Bell, но может быть так, что стратегия Twitter ожидает oauth_token и oauth_verifier в request.params, но disabled param не интерпретируется стратегией, поэтому происходит перенаправление.
Кому-то удалось справиться с этим сценарием?