passport-facebook登录不会持续存在

时间:2017-02-01 01:49:03

标签: node.js passport.js passport-facebook

我使用here中的标准示例,其中包含:

app.get('/login/facebook',
  passport.authenticate('facebook'));

app.get('/login/facebook/return', 
  passport.authenticate('facebook', { failureRedirect: '/login' }),
  function(req, res) {     //req.user is populated
    res.redirect('/');
  });

app.get('/', function (req, res) {
    res.render('index.jade', { user: req.user });   //req.user is undefined
});

登录似乎工作正常。在/login/facebook/return我可以看到req.user及其详细信息。但在重定向到/后,req.user变为undefined

还有什么我必须添加才能使其有效吗?

1 个答案:

答案 0 :(得分:1)

根据Passportjs Documentationspassport.initialize()passport.session()(对于持久登录),应在app之后将express-session添加到express.session()

来自文档:

  

请注意,启用会话支持完全是可选的,但建议大多数应用程序使用。如果启用,请务必在passport.session()之前使用app.configure(function() { app.use(express.static('public')); app.use(express.cookieParser()); app.use(express.bodyParser()); app.use(express.session({ secret: 'keyboard cat' })); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); }); ,以确保以正确的顺序恢复登录会话。

ERROR     2017-02-01 02:46:05,320 - root - Traceback (most recent call last):
  File "/home/ubuntu/workspace/.../bootstrap.py", line 11, in <module>
    from app import create_app
  File "/home/ubuntu/workspace/.../app/__init__.py", line 31, in <module>
    from handlers.hdl_logger import blpLog
  File "/home/ubuntu/workspace/.../app/handlers/hdl_logger.py", line 15, in <module>
    from google.cloud import logging
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/logging/__init__.py", line 18, in <module>
    from google.cloud.logging.client import Client
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/logging/client.py", line 32, in <module>
    from google.cloud.client import JSONClient
  File "/usr/local/lib/python2.7/dist-packages/google/cloud/client.py", line 17, in <module>
    import google.auth.credentials
ImportError: No module named auth.credentials