Passport facebook注销无法正常工作

时间:2015-10-07 06:58:26

标签: node.js facebook passwords

我试图实施护照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以及新的浏览器实例 *没有运气请指出我提出的可能是错误

2 个答案:

答案 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'
  })
);