Postingan lainnya
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
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
Tanggapan
coba didebug pelan-pelan dengan console.log(namaVariable) mulai dari profile, dan data2 lain yang dianggap tidak ada
1 Jawaban:
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