我正在使用 passport.js,如果我可以将 facebook id 链接到已登录用户的帐户,我会很受伤。像这样:
passport.use( new FacebookStrategy({
consumerKey: ---
consumerSecret: ---
callbackURL: "http://mycallback"
},
function(token, tokenSecret, profile, done) {
if (user is logged in)
user = User.addfacebookId(user, profile.id)
done(user);
}
}
));
最佳答案
有几种方法可以解决这个问题,但我认为最直接的方法之一是使用 passReqToCallback
选项。启用后,req
成为验证回调的第一个参数,从那里您可以检查 req.user
是否存在,这意味着用户已经登录. 那时,您可以将用户与 Facebook 个人资料详细信息相关联,并向 done 回调提供相同的用户实例。如果req.user
不存在,照常处理即可。
例如:
passport.use(new FacebookStrategy({
clientID: ---
clientSecret: ---
callbackURL: "http://mycallback"
passReqToCallback: true
},
function(req, accessToken, refreshToken, profile, done) {
if (req.user)
// user is already logged in. link facebook profile to the user
done(req.user);
} else {
// not logged in. find or create the user based on facebook profile
}
}
));
关于node.js - 使用 Passport.js 将 facebook 数据链接到当前登录的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11210817/