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
avatar maszgalang

@maszgalang

297 Kontribusi 80 Poin

  • coba didebug pelan-pelan dengan console.log(namaVariable) mulai dari profile, dan data2 lain yang dianggap tidak ada - @hilmanski


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
avatar maszgalang

@maszgalang

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
avatar maszgalang

@maszgalang

297 Kontribusi 80 Poin


Login untuk gabung berdiskusi