I am new to node.js and am currently working on my first project. While using passport.js for OAuth it is giving me
Error: passport.initialize() middleware not in use
at IncomingMessage.req.login.req.logIn (C:\Users\Rohit\Documents\Projects\server\node_modules\passport\lib\http\re
quest.js:46:34)
error even though I am not using sessions at the moment . But when I comment out my 'done()' function it stops showing this error. As per my knowledge I have to use 'passport.initialize()' only when I make use of sessions. Can someone please help me out!
index.js :-
const express = require('express');
const mongoose = require('mongoose');
const keys = require('./config/keys');
require('./models/User');
require('./services/passport');
const app = express();
mongoose.connect
(
keys.mongoURI,
{
useNewUrlParser : true,
useCreateIndex : true,
useUnifiedTopology : true,
}
)
.then(() => console.log('Mongoose connected ...'))
.catch(err => console.log(err));
require('./routes/authroutes')(app);
const PORT = process.env.PORT || 5000;
app.listen(PORT);
passport.js:-
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('../config/keys');
const mongoose = require('mongoose');
const User = mongoose.model('users');
passport.use(
new GoogleStrategy
(
{
clientID : keys.googleClientID,
clientSecret : keys.googleClientSecret,
callbackURL : '/auth/google/callback'
},
(acessToken, refreshToken, profile, done) =>
{
//console.log(profile);
User.findOne({ googleID : profile.id})
.then(
(existingUser) =>
{
if(existingUser)
{
//there is already a user with this emailin our adatbase
console.log('User already exists!');
done(null, existingUser);
}
else
{
//NEW User
console.log('New User!\n');
new User({ googleID : profile.id})
.save()
.then
(
user => done(null, user)
);
}
}
);
}
)
);
Thank you!