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

Dipost 4 tahun yang lalu

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

avatar maszgalang
@maszgalang

297 Kontribusi 80 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban