gpt4 book ai didi

node.js - 使用 PassorJS 将本地用户连接到 Facebook/Twitter

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:01 24 4
gpt4 key购买 nike

我有一个现有的用户群,我希望允许他们与其 Facebook/Twitter 帐户链接。看起来我可以使用 Passportjs 但有困难,

现在,一个 url 传入他们的用户/通行证,我执行本地策略,并查找用户。然后我想执行我认为的授权。我收到 Facebook 提示询问我是否要允许,然后我使用 accessToken 进行回调,但我无法将该 token 与我的数据库中的现有用户联系起来,因为我现在看到了获取请求信息的方法。

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('/');
}
);

最佳答案

假设用户已使用本地策略登录,则该用户应作为 req.user 可用于请求。然后,您可以将 facebook 凭据信息添加到现有用户对象。

关于node.js - 使用 PassorJS 将本地用户连接到 Facebook/Twitter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com