需要帮助在 nodejs 中调试我的 webapp
Need help debugging my webapp in nodejs
我在 passport.js 的帮助下通过开发 google 策略在 nodejs 中使用 google outh2。但是当我在任何文件的代码中的任何位置使用 console.log 时,问题就来了,无论它在 Web 应用程序目录中的文件是什么,它都在工作。但是当我在这个函数中使用我的 console.log 时,没有任何东西被执行,我既不能获取用户数据,也不能执行 console.log 来在控制台中显示一条消息,当在这个代码中执行时
(accessToken, refreshToken, profile, done) => {
console.log('data');
})
完整代码在这里:
文件:护照-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');
}
));
路线: 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;
入口点: 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;
您似乎没有将 passport 初始化为 Express 的中间件。
尝试将此添加到 app.js
app.use(passport.initialize());
问题出在代码
router.get('/google/redirect', function(req,res){
res.redirect('/app');
});
在 router.js 文件中
应该写成
router.get('/google/redirect', passport.authenticate('google'), function(req,res){
res.redirect('/app');
});
因为发生的事情是在登录时发生的,所以在 link 重定向发生之前,那个人的 google 数据是可以访问的。但是在重定向之后,对 google 帐户数据的所有数据访问都将丢失。要再次访问它,我们将使用 google 策略调用 passport 的身份验证功能,这将加载 google 用户数据。如上面的代码所示
我在 passport.js 的帮助下通过开发 google 策略在 nodejs 中使用 google outh2。但是当我在任何文件的代码中的任何位置使用 console.log 时,问题就来了,无论它在 Web 应用程序目录中的文件是什么,它都在工作。但是当我在这个函数中使用我的 console.log 时,没有任何东西被执行,我既不能获取用户数据,也不能执行 console.log 来在控制台中显示一条消息,当在这个代码中执行时
(accessToken, refreshToken, profile, done) => {
console.log('data');
})
完整代码在这里: 文件:护照-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');
}
));
路线: 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;
入口点: 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;
您似乎没有将 passport 初始化为 Express 的中间件。
尝试将此添加到 app.js
app.use(passport.initialize());
问题出在代码
router.get('/google/redirect', function(req,res){
res.redirect('/app');
});
在 router.js 文件中
应该写成
router.get('/google/redirect', passport.authenticate('google'), function(req,res){
res.redirect('/app');
});
因为发生的事情是在登录时发生的,所以在 link 重定向发生之前,那个人的 google 数据是可以访问的。但是在重定向之后,对 google 帐户数据的所有数据访问都将丢失。要再次访问它,我们将使用 google 策略调用 passport 的身份验证功能,这将加载 google 用户数据。如上面的代码所示