2017-12-12 11 views
1

私はnode.jsを学び、google oauthでクッキーを保存しているエクスプレスログインをやっているような頭痛をしています。私はmongodbを使用しています、ユーザーは問題なく保存されます。google-oathログイン後にnode.js/express/passportがぶら下がっています

私はうまくログインできますが、私はクッキーbaaaamを設定します。しかし、コンソールにエラーはありません。

cookies-sessionとexpressを使用してクッキーを設定しようとすると、アプリケーションがハングアップし、 '/ logout'のルートにアクセスできなくなります。私はブラウザ上のクッキーをクリアすれば、私は再びそれらにアクセスすることができます。私はこの時点で立ち往生しています。

これは私のapp.js

app.use(
    cookieSession({ 
     maxAge: 30 * 24 * 60 * 60 * 1000, 
     keys: [keys.cookieSession] 
    }) 
); 

app.use(passport.initialize()); 
app.use(passport.session()); 

私のルート

app.get('/auth/google', 
    passport.authenticate('google', { 
    scope: ['profile', 'email'] 
    }) 
); 

app.get('/auth/google/callback', passport.authenticate('google')); 
app.get('/api/logout', (req, res) => { 
    req.logout(); 
    res.send(req.user); 
}); 

と私のpassport.js

passport.serializeUser((user, done) => { 
    done(null, user.id); 
}); 

passport.deserializeUser((id, done) => { 
    User.findById(id).then(user => { 
     done(err, user); 
    }); 

}); 

passport.use(new GoogleStrategy({ 
    clientID: keys.googleClientID, 
    clientSecret: keys.googleClientSecret, 
    callbackURL: '/auth/google/callback' 
    }, 
    (accessToken, refreshToken, profile, done) => { 
     User.findOne({ googleId: profile.id }).then((existingUser) => { 
       if (existingUser) { 
       // don't create a new user 
       done(null, existingUser); 

       } else { 
       // create a new user  
       new User ({ googleId: profile.id }).save() 
       .then(user => (null, user)); 

       } 
      }) 

    } 

)); 

答えて

0

だから、W iは、この仕事を得ることができるように、私は何が間違っていたのか知​​りたい。

私はこれを変更して機能しましたが、誰かが手掛かりを持っていますか?

passport.deserializeUser((id, done) => { 
    User.findById(id, (err, user) => { 
     done(err, user); 
    }); 
}); 

passport.deserializeUser((id, done) => { 
    User.findById(id).then(user => { 
     done(err, user); 
    }); 

}); 

関連する問題