Passport.js验证到Gmail API会导致GooglePlusAPIError

时间:2018-10-10 08:54:33

标签: oauth-2.0 google-api passport.js google-plus gmail-api

我使用Passport.js向Google进行身份验证。我定义了以下范围:

passport.authenticate('google', {
  scope: [
    'https://www.googleapis.com/auth/gmail.modify',
  ],
})

所以,我只想访问Gmail API。

现在,谷歌回应:

GooglePlusAPIError: Insufficient Permission

当我通过Google API仪表板向我的项目添加Google+ API并将以下作用域添加到我的password.authenticate调用中时,它便可以工作:

'https://www.googleapis.com/auth/userinfo.email'

但是,当我唯一想做的就是访问Gmail时,为什么需要Google+ API?

我还找到了这个网站:https://developers.google.com/gmail/api/auth/web-server,他们在其中设置了这些范围:

SCOPES = [
  'https://www.googleapis.com/auth/gmail.readonly',
  'https://www.googleapis.com/auth/userinfo.email',
  'https://www.googleapis.com/auth/userinfo.profile',
  # Add other requested scopes.
]

我想念什么?

谢谢!

干杯, 尼尔斯

编辑:

我刚刚在Google API仪表板上进行了研究,并找到了以下屏幕。那么,这些范围是强制性的吗?

screenshot of my Google API dashboard

编辑2

上下文是Express.js应用程序。整个通话看起来像:

router.get('/google', passport.authenticate('google', {
  scope: [
    'https://www.googleapis.com/auth/gmail.modify',
  ],
}));

router.get('/google/callback', passport.authenticate('google', {
  failureRedirect: '/',
}), (req, res) => {
  req.session.token = req.user.token;
  res.redirect('/');
});

0 个答案:

没有答案