我试图实施护照Facebook我在server.js中的代码如下所示 用户点击登录facebook时使用的路线
router.get('/auth/facebook',
passport.authenticate('facebook',{ scope : 'email' }),
function(req, res){
});
成功登录后,它会重定向到success.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
*我尝试从数据库中删除详细信息但仍然指向success.html *我尝试删除cookie以及新的浏览器实例 *没有运气请指出我提出的可能是错误
答案 0 :(得分:0)
您的网页被重定向到'success.html',因为Facebook会记住登录凭据。除非您从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需要是运行应用程序的网址。
例如:http://localhost:3000如果它在本地运行
OR
http://128.800.90.67:3000如果它正在远程运行
答案 1 :(得分:0)
请参阅passport-facebook's documentation for re-authentication。
将第一位更改为如下所示:
router.get('/auth/facebook',
passport.authenticate('facebook', {
scope: 'email',
authType: 'reauthenticate',
authNonce: 'foo123'
})
);