У меня есть существующая пользовательская база, которую я хочу разрешить им связывать со своими учетными записями Facebook/Twitter. Похоже, я могу использовать паспортные документы, но у меня есть трудности,Подключить локальных пользователей к Facebook/Twitter с помощью PassortJS
Прямо сейчас, у вас есть пропуск у пользователя/прохода, я делаю локальную страгию и ищу пользователя. Затем я хочу выполнить авторизацию, которую я предполагаю. Я получаю промо-ролики facebook, спрашиваю, хочу ли я разрешить, и я ударил обратный вызов с помощью accessToken, но у меня нет возможности связать этот токен с существующим пользователем в моем db, поскольку теперь я вижу способ получения информации о запросе.
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
Users.findOne({_id: user._id}, function(err, user) {
return done(err, user);
});
});
passport.use(new LocalStrategy({ passReqToCallback: true }, function(req, username, password, done) {
Users.findOne({_id: username}, function(err, user) {
return done(null, user);
});
}
));
passport.use(new FacebookStrategy({
clientID: 'xxxx',
clientSecret: 'xxxx',
callbackURL: "http://xxxx/facebook/callback",
passReqToCallback: true
},
function(req, accessToken, refreshToken, profile, done) {
// How would I get access to the user found in the LocalStrategy here so I can associate the accessToken to the user in the db?
console.log(accessToken);
console.log(refreshToken);
var err = null;
var user = {};
return done(err, user);
}
));
server.get('/facebook', passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
function (req, res) {
if (req && req.user) {
passport.authorize('facebook', { scope: ['publish_actions','manage_pages'] })(req, res);
}
});
server.get('/facebook/callback',
passport.authorize('facebook', { failureRedirect: '/facebook/failure', successRedirect: '/facebook/success' }),
function(req, res) {
res.redirect('/');
}
);
Ознакомьтесь с [настоящим руководством] (http://passportjs.org/guide/authorize/) с веб-сайта Passport, в котором описано, как связать сторонние учетные записи с существующими пользователями. – robertklep