Node.js 在回调中使用登录会话数据的passportjs

Node.js 在回调中使用登录会话数据的passportjs,node.js,session,passport.js,Node.js,Session,Passport.js,我有以下使用passport js进行dropbox身份验证的代码 passport.use(new DropboxOAuth2Strategy({ apiVersion: '2', clientID: "key", clientSecret: "secret", callbackURL: "http://127.0.0.1:3000/users/callback" }, function(token, tokenS

我有以下使用passport js进行dropbox身份验证的代码

passport.use(new DropboxOAuth2Strategy({
        apiVersion: '2',
        clientID: "key",
        clientSecret: "secret",
        callbackURL: "http://127.0.0.1:3000/users/callback"
    },
    function(token, tokenSecret, profile, done) {
        // User already logged in and,
        // need to access that session data here
        console.log(profile);
        return done(null, profile);
    }
));
正如你在上面看到的,用户允许我使用我的应用程序,我收到了令牌、令牌密码和配置文件。现在的问题是我需要返回一个用户对象,我可以,但是除了通过req.session,我不知道如何访问已经建立的会话数据


我只想更新已经登录的用户会话,添加token、tokensecret值并在“done”函数中返回。

要访问
req
对象,可以将
passReqToCallback
选项传递到
DropboxOAuth2Strategy

例如:

passport.use(new DropboxOAuth2Strategy({
        apiVersion: '2',
        clientID: "key",
        clientSecret: "secret",
        callbackURL: "http://127.0.0.1:3000/users/callback",
        passReqToCallback: true // ask for the request object
    },
    // first argument will be the request
    function(req, token, tokenSecret, profile, done) {
        // User already logged in and,
        // need to access that session data here
        console.log(req.session)
        console.log(profile);
        return done(null, profile);
    }
));
但是,最好保存在数据库中,然后像这样检索用户数据:

function(accessToken, refreshToken, profile, done) {
    User.findOrCreate({ providerId: profile.id }, function (err, user) {
      return done(err, user);
    });
  }