我使用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仪表板上进行了研究,并找到了以下屏幕。那么,这些范围是强制性的吗?
编辑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('/');
});