Facebook 如何正确设置与everyauth和express的会话?

Facebook 如何正确设置与everyauth和express的会话?,facebook,node.js,session,express,everyauth,Facebook,Node.js,Session,Express,Everyauth,我正在尝试构建一个简单的nodejs应用程序,可以使用express和everyauth登录facebook。在自述教程之后,我在app.js中执行了以下设置: var everyauth = require('everyauth'); everyauth.facebook .appId('829428097067274') .appSecret('2c4d4a96514aa8374fbc54d611945148') .findOrCreateUser(function

我正在尝试构建一个简单的nodejs应用程序,可以使用express和everyauth登录facebook。在自述教程之后,我在app.js中执行了以下设置:

var everyauth = require('everyauth');

everyauth.facebook
    .appId('829428097067274')
    .appSecret('2c4d4a96514aa8374fbc54d611945148')
    .findOrCreateUser(function (session, accessToken, accessTokExtra, fbUserMetadata) {
        // I will fill this in with something real later, but for now
        // I just want something that works with a fake session

        console.log("in find or create user")

        // this is always undefined...
        console.log(session);

        // these look good; I'm getting real user info
        console.log(accessToken);
        console.log(accessTokExtra);
        console.log(fbUserMetadata);

        // I'm not sure what I need to return here. I've tried
        // variations of this.Promise()/promise.fulfill() as well
        return { id: 100, session: "the session" };
    })
    .redirectPath('/');

// ...

// this gives an error saying that session is no longer
// bundled with express, but I'm not sure which package to replace
// it with:
// app.use(express.session());

app.use(everyauth.middleware(app));
当我启动我的应用程序时,我会访问localhost:3000/auth/facebook,它会正确地重定向到facebook。我授权那里的应用程序,它将我重定向到localhost:3000/auth/facebook/callback。但是,此处我的应用程序记录了以下错误:

FaceBook的步骤getSession有希望:会话;但是,该步骤不返回任何内容。通过返回预期值或返回承诺所述值的承诺来修复步骤


我做错了什么?

已经很晚了,但我仍然在谈论这个问题,我还与everyauth和express 4.x进行了斗争

如果您使用的是express 4.x,请通过npm install express session安装express session

使用以下代码,其他一些代码与everyauth的示例相同

var session = require('express-session');
...
var app = express();
app.use(session({secret : "anything you want"}));
app.use(everyauth.middleware());

您是否尝试按照项目页面上的描述启用调试:此外,队列中至少有一个facebook问题,另一个与express 4兼容…您可能需要查看问题队列。Everyauth在很长一段时间内都没有被主动更新。你可能想调查一些事情,比如护照或其他替代品。