最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用护照登录社交日志用户到同一帐户

运维笔记admin12浏览0评论

使用护照登录社交日志用户到同一帐户

使用护照登录社交日志用户到同一帐户

我正在尝试使用社交媒体(FB和Google)以及本地策略实施登录。我有护照本地工作正常(除了允许重复的电子邮件,但单独的问题)但我看到Facebook和谷歌策略的一些奇怪的行为。这是一个场景:

  1. 使用Facebook或Google登录
  2. 登出
  3. 以初始登录的相反方式登录(即第一个FB,第二个Google)
  4. 该应用程序使用初始帐户而不是第二个帐户登录。

我按照本页面上的教程设置了各种策略

.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)

  1. 暂无评论