Google oauth not returning email passport authentication
I had the same problem and wrote the scope in this way:
app.get('/connect/google', passport.authenticate('google', {
scope: [
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/userinfo.email'
]
}));
And you will get the email:
function(accessToken, refreshToken, profile, done) {
console.log(profile.emails[0].value);
});
I hope this helps you.
The above answer definitely works, there is also one more way to approach this.
app.get('/auth/google',
passport.authenticate('google', { scope: ['profile', 'email'] })
);
In your routes.js
with the profile
add email
.
This should resolve your issue.
According to google documentation for oauth, the first parameter has to be openid and the second can be email or profile, or both
app.get('/auth/google',
passport.authenticate('google', {scope: ['openid', 'email', 'profile']})
);
documentation