使用护照登录社交日志用户到同一帐户
我正在尝试使用社交媒体(FB和Google)以及本地策略实施登录。我有护照本地工作正常(除了允许重复的电子邮件,但单独的问题)但我看到Facebook和谷歌策略的一些奇怪的行为。这是一个场景:
- 使用Facebook或Google登录
- 登出
- 以初始登录的相反方式登录(即第一个FB,第二个Google)
- 该应用程序使用初始帐户而不是第二个帐户登录。
我按照本页面上的教程设置了各种策略
.Wk93wN-nFPb
策略示例:
passport.use(new googleStrategy({
clientID: config.google.clientID,
clientSecret: config.google.clientSecret,
callbackURL: config.google.callbackURL,
scope: ['profile', 'email'],
passReqToCallback: true
},
(request, accessToken, refreshToken, profile, done) => {
var emailArray = new Array();
profile.emails.forEach((email) => {
emailArray.push(email.value);
})
User.findOne({ $or: [{ oauthID: profile.id }, { email: { $in: [emailArray] } }] }, (err, user) => {
if (err) {
console.log(err);
}
if (!err && user !== null) {
console.log('Already existing user:' + user);
done(null, user);
} else {
console.log('Creating a new user');
user = new User({
email: emailArray[0],
username: profile.name.givenName,
oauthID: profile.id
});
user.save(function (err) {
if (err) {
console.log(err);
} else {
done(null, user);
}
});
}
});
}
));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
回答如下:
我找到的解决方案......
当我最初设置护照本地模块时,我创建了passport.serializeUser()
和passport.deserializeUser()
方法,如下所示:
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
与本文相关的文章
评论列表(0)
- 暂无评论