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