使用Passport.js将facebook数据链接到当前login的用户

我正在使用passport.js,如果我可以将一个Facebook ID链接到一个login用户的帐户,我正在伤人。 像这样的东西:

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选项。 启用该function后, req将成为validationcallback的第一个参数,从那里您可以检查req.user存在,这意味着用户已经login。此时,您可以将用户与Facebook个人资料详细信息并为完成的callback提供相同的用户实例。 如果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 } } ));