Passport google oauth2 not return profile.id
halo guys ada yang bisa bantu saya ? saya kebingungan karena pada saat login menggunakan google profile.id emailnya tidak terisi dan masuk kedatabase, disini saya rasa bahwa id tersebut kosong jadi tidak bisa masuk ke mongodb
passport strategy
passport.use( new GoogleStrategy( { clientID: config.get('clientIDGoogle'), clientSecret: config.get('clientSecretGoogle'), callbackURL: config.get('callbackGoogleUrl'), passReqToCallback: true, profileFields: ['id', 'emails', 'displayName', 'openid'] }, function(request, accessToken, refreshToken, profile, done) { User.findOne({ 'userInfo.google_id': profile.id }, async function( err, user ) { if (err) { return done(err); } if (!err && user !== null) { done(null, user); } else { const userInfo = {}; userInfo.google_id = profile.id; userInfo.token = accessToken; userInfo.login_type = 'google'; const email = profile.email; user = new User({ name: profile.displayName, email, userInfo }); await user.save(); console.log(user); done(null, user); } }); } ) );Nodejs Router
router.get( '/google', passport.authenticate('google', { scope: ['email', 'profile'] }), function(req, res) {} ); router.get( '/google/callback', passport.authenticate('google', { failureRedirect: '/' }), function(req, res) { req.app.set('user', res.req.user); res.redirect('/api/auth/google/accessToken'); } ); router.get('/google/accessToken', (req, res) => { const UserData = req.app.get('user'); const payload = { user: { id: UserData.id } }; jwt.sign( payload, config.get('jwtSecret'), { expiresIn: 360000 }, (err, token) => { if (err) throw err; return res.json({ access_token: token }); } ); });masalahnya disini adalah google profile.id itu tidak masuk ke database masalahnya kenapa, sudah stuck ahaha terimakasih
297 Kontribusi 80 Poin
- coba didebug pelan-pelan dengan console.log(namaVariable) mulai dari profile, dan data2 lain yang dianggap tidak ada - @hilmanski
atau respon:
Jawaban Terpilih
Sudah fix bang ini soalnya beda nama object yg atas saya pake facebook_id. Sedangkan yg google mau saya masukan google_id ternyata gak bisa jadi saya ubah semua jadi social_id dan saya berikan type_login, jadi sudah bisa masuk
297 Kontribusi 80 Poin
Jawaban
Sudah fix bang ini soalnya beda nama object yg atas saya pake facebook_id. Sedangkan yg google mau saya masukan google_id ternyata gak bisa jadi saya ubah semua jadi social_id dan saya berikan type_login, jadi sudah bisa masuk
297 Kontribusi 80 Poin
Login untuk gabung berdiskusi
Pertanyaan Lainnya
Top Kontributor
- @ahanafi
813 Kontribusi 551 Poin
- @Nandar
647 Kontribusi 204 Poin
- @dianarifr
642 Kontribusi 316 Poin
- @Saputroandhi
509 Kontribusi 162 Poin
- @dodipsitorus
412 Kontribusi 145 Poin