如何在 Node js 中使用 OAuth 获取用户电子邮件地址

How to Get user Email Address using OAuth in Node js

我正在编写代码以添加使用 Google 登录的功能。我已经编写了代码,但是当用户使用 google 登录时,它只给我 ID、姓名、全名等。它不提供用户电子邮件地址。谁能帮我解决这个问题?以下是我的代码

passport.use(new GoogleStrategy({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET,
    callbackURL: "http://localhost:8000/auth/google/notepad"
  },
  function(accessToken, refreshToken, profile, cb) {
    console.log(profile);
    User.findOrCreate({ googleId: profile.id }, function (err, user) {
      return cb(err, user);
    });
  }
));


router.get('/auth/google', passport.authenticate('google',{scope: ['profile']}));
router.get('/auth/google/notepad', 
  passport.authenticate('google', { failureRedirect: '/' }),
  async function(req, res) {
    const token = await req.user.generateAuthToken();
    res.cookie('authToken', token);
    res.redirect('/')
  });

您缺少 email 范围。这是他们个人资料的一个单独范围。

如果您想了解更多信息,也请参阅文档:https://developers.google.com/identity/protocols/oauth2/openid-connect#scope-param