Node.js Googe 身份验证回调错误



我正在尝试将Googe身份验证设置为一个运行节点的网站.js,护照.js,express和mongodb,主要基于这个例子。我已经设法使本地身份验证正常工作,但是当尝试使Google身份验证正常工作时,尝试初始化服务器时出现TypeError: OAuth2Strategy requires a verify callback错误。

Google 的身份验证策略保存在/config/passport.js 中,如下所示:

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy();
var User = require('../models/user');
var configAuth = require('./auth');
module.exports = function(passport) {
// serialize the user session
passport.serializeUser(function(user, done) {
done(null, user.id);
});
// deserialize the user session
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
// =================GOOGLE=======================
var strategyOptions = {
clientID        : configAuth.googleAuth.clientID,
clientSecret    : configAuth.googleAuth.clientSecret,
callbackURL     : configAuth.googleAuth.callbackURL,
};
var verifyCallback = function(token, refreshToken, profile, done) {
process.nextTick(function() {
User.findOne({ 'google.id' : profile.id }, function(err, user) {
if (err)
return done(err);
if (user) {
return done(null, user);
} else {
var newUser = new User();
newUser.google.id = profile.id;
newUser.google.token = token;
newUser.google.name = profile.displayName;
newUser.google.email = profile.emails[0].value;
newUser.save(function(err) {
if (err)
throw err;
return done(null, newUser);
});
}
});
});
};
passport.use(new GoogleStrategy(strategyOptions, verifyCallback));
};    

我的应用程序.js如下所示(调用护照.js加粗(:

// set up ================================================================
var express = require('express');
var app = express()
var path = require('path');
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var morgan = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var configDB = require('./config/database.js');
// config ================================================================
mongoose.connect(configDB.url);
require('./config/passport')(passport);
//set up express application
app.use(morgan('dev'));
app.use(cookieParser());
app.use(bodyParser());
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(session({ secret: 'what a long string' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(express.static(path.join(__dirname, 'public')));
// routes ================================================================
require('./routes/index.js')(app, passport);
// launch ================================================================
//app.listen(port);
module.exports = app;

我无法判断这里出了什么问题,因为据我所知,验证回调是在 passport.use(( 函数中提供的。我花了最后一天的时间在谷歌上搜索并搜索StackOverflow,但还没有找到有效的修复程序。

抱歉,如果这是一个非常明显的错误,我是整个节点生态系统和网页设计的新手。如果有帮助,很乐意提供更多信息。

你做得很好。问题在于获得谷歌策略。

更改此行

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy();

到下面提到的一个

var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
  • 您可以在此处查看任何其他问题的工作示例。

供参考: https://github.com/Khushbu-2112/OAuth-google-example

最新更新