2015-10-07 2 views
1

Я пытался реализовать паспорт facebook кода я в server.js показано ниже маршрута, который используется, когда пользователь нажмет Войти через Facebookпаспорт facebook выхода из системы не работает

router.get('/auth/facebook', 
     passport.authenticate('facebook',{ scope : 'email' }), 
     function(req, res){ 
     }); 

об успешном входе в систему он перенаправляет к успеху .html, который в качестве кнопки выхода из системы

router.get('/auth/facebook/callback', 
     passport.authenticate('facebook', { 
     successRedirect : '/success', 
     failureRedirect: '/' 
     }), 
     function(req, res) { 
     res.render('success.html'); 
     }); 

выход из системы маршрут

router.get('/logout', function(req, res){ 
     req.logout(); 
     res.redirect('/'); 
    }); 

если я нажимаю на кнопку выхода из системы все равно я будет перенаправлен на главную страницу

router.get('/', function(req, res){ 
    res.render('auth.html'); 
}); 

auth.html

<html> 
     <head> 
      <title>Node.js OAuth</title> 
     </head> 
     <body> 
     <a href="/auth/facebook">Sign in with Facebook</a> 
     </body> 
     </html> 




but after if i click the Sign in with Facebook link i will directly take to success.html page and again i was never able to see the Facebook login page where we provide the credentials of the Facebook account 

* я попытался удалить детали из базы данных, но все это указывает на успех в .html * я пытался путем удаления куки, а также с новым экземпляром браузера * нет удачи, пожалуйста, указать мне подал, что может быть ошибка

ответ

0

Ваша страница перенаправляется «success.html», потому что Faceb ook запоминает учетные данные входа. Если вы не выходите вручную из Facebook, ваше приложение всегда будет перенаправлено на «success.html».

Это то, что вы могли бы сделать, чтобы выйти из Facebook из своего приложения.

В вашей странице logout.html:

<form action="/logoutFromFacebook" method="POST"> 
    <input type="hidden" name="accessToken" value="<%= user.accessToken %>"/> 
</form> 

После кода переходит в контроллер:

router.post('/logoutFromFacebook', function(req, res) { 
    res.redirect('https://www.facebook.com/logout.php?next='+server.ip+'/logout&access_token='+req.body['accessToken']); 
}); 

router.get('/logout', function(req, res){ 
    req.logout(); 
    res.redirect('/'); 
}); 

server.ip должен быть URL, где ваше приложение работает с ,
Например: http://localhost:3000 если он выполняется локально
ИЛИ
http://128.800.90.67:3000, если он работает удаленно

Смежные вопросы