Node.js 在回调中使用登录会话数据的passportjs
我有以下使用passport js进行dropbox身份验证的代码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.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);
});
}