I am using google outh2 in nodejs with help of passport.js by developing google strategy . But issues comes here when i use console.log any where in the code in any file whatever file is it in web app directory its working. But when i use my console.log in this function nothing is being executed neither i am able to fetch user data nor able to execute console.log to just display a message in console, when executed inside this code
(accessToken, refreshToken, profile, done) => {
console.log('data');
})
Full code is here: File : passport-setup.js
var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
clientID: "",
clientSecret: "",
callbackURL: "http://127.0.0.1:3000/auth/google/redirect"
},
function(accessToken, refreshToken, profile, done) {
console.log('logineed');
}
));
Route: index.js
var express = require('express');
var passport = require('passport');
var router = express.Router();
router.get('/login', function(req, res, next) {
res.render('index', { title: 'Login' });
});
router.get('/google',passport.authenticate('google', { scope: ['profile'] }));
router.get('/google/redirect', function(req,res){
res.redirect('/app');
});
router.get('/app',function(req,res){
res.send('Your are in');
});
module.exports = router;
Entry point: app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var passportConfig = require('./config/passport-setup');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/auth', indexRouter);
app.use('/app', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
The problem was with code
router.get('/google/redirect', function(req,res){
res.redirect('/app');
});
in router.js file
It should we written as
router.get('/google/redirect', passport.authenticate('google'), function(req,res){
res.redirect('/app');
});
Because what happens is at time of login , before redirection of link happens the google data of that person is accessible. But after the redirection all the data access to google account data is lost. To access it again we will call authenticate function of passport with google strategy which will load the google user data. As given in code above