Daftar dan Belajar Sekarang!

Passport google oauth2 not return profile.id

foto maszgalang
291 Kontribusi 75 Coto
2 bulan yang lalu
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
  • coba didebug pelan-pelan dengan console.log(namaVariable) mulai dari profile, dan data2 lain yang dianggap tidak ada - hilmanski

Tag: nodejs javascript

✔ Forum ini sudah terjawab


Jawaban
foto maszgalang
291 Kontribusi 75 Coto
2 bulan yang lalu
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
answered icon
foto maszgalang
291 Kontribusi 75 Coto
2 bulan yang lalu
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


Login untuk diksusi di forum sekolah koding