错误:invalid_request缺less必需的参数:范围(Restify&Passportjs w / Google OAuth2)

所以,我使用Restify和Passportjs(Google OAuth2策略)遇到了Node.js应用程序的问题。 当我使用passport.authenticate() ,它给我以下错误:

400.这是一个错误。
错误:invalid_request
缺less必需的参数:范围

几年前,我发现了另外一个同样的问题( 在Google Oauth2上使用Google Passportjs时,invalid_request丢失了:范围 )。 作者说他自己终于修好了,但没有发布修复。

有没有其他人遇到这个问题,并能够解决它? 我无法弄清楚。 这是我的代码:

authController.js

 var passport = require('passport'); var GoogleStrategy = require('passport-google-oauth20').Strategy; var auth = { google: { clientID: '<ID>', clientSecret: '<SECRET>', callbackURL: 'https://localhost:8080/auth/google/return', scope: ['profile', 'email'] } }; passport.use(new GoogleStrategy({ clientID: auth.google.clientID, clientSecret: auth.google.clientSecret, callbackURL: auth.google.callbackURL }, function(accessToken, refreshToken, profile, cb) { return cb(null, profile.id); })); module.exports.authenticate = passport.authenticate('google', { scope: auth.google.scope }); module.exports.isAuthenticated = passport.authenticate('google', { successRedirect: '/hello/succeed', failureRedirect: '/hello/fail' }); 

server.js

 var restify = require('restify'), fs = require('fs'), bodyParser = require('body-parser'), authController = require('./controllers/authController'); // Placeholder handler. function respond(req, res, next) { res.send('hello ' + req.params.name); return next(); } // Create server. var api = restify.createServer({ certificate: fs.readFileSync('server.crt'), key: fs.readFileSync('server.key'), name: 'BQ:IQ Question Writer' }); // Setup authentication api.get('/auth/google', authController.authenticate); api.get('/auth/google/return', authController.isAuthenticated); // Setup routes. api.get('/hello/:name', respond); api.head('/hello/:name', respond); api.listen(8080, function() { console.log('%s listening at %s', api.name, api.url); });