如何解决TokenError:google auth poassport 的错误请求
我正在尝试使用护照和谷歌护照-google-oauth20 在 Node.js 中嵌入谷歌身份验证。问题是,当谷歌回调路由打开时,我得到:
TokenError: Bad Request
at Strategy.OAuth2Strategy.parseErrorResponse (/home/leovaldez/dev/projects/stories/node_modules/passport-oauth2/lib/strategy.js:358:12)
at Strategy.OAuth2Strategy._createOAuthError (/home/leovaldez/dev/projects/stories/node_modules/passport-oauth2/lib/strategy.js:405:16)
at /home/leovaldez/dev/projects/stories/node_modules/passport-oauth2/lib/strategy.js:175:45
at /home/leovaldez/dev/projects/stories/node_modules/oauth/lib/oauth2.js:191:18
at passBackControl (/home/leovaldez/dev/projects/stories/node_modules/oauth/lib/oauth2.js:132:9)
at IncomingMessage.<anonymous> (/home/leovaldez/dev/projects/stories/node_modules/oauth/lib/oauth2.js:157:7)
at IncomingMessage.emit (events.js:203:15)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
这是我认为应该相关的一些文件
passport.js
const GoogleStrategy = require('passport-google-oauth20').Strategy
const mongoose = require('mongoose')
const User = require('../models/User')
module.exports = function (passport) {
passport.use(new GoogleStrategy({
clientID: process.env.GOOGLE_CLIENT_ID,clientSecret: process.env.GOOGLE_CLIENT_SECRET,callbackURL: "auth/google/callback",},async (accesstoken,refreshToken,profile,done) => {
console.log(profile)
}))
passport.serializeUser((user,done) => {
done(null,user.id);
});
passport.deserializeUser((id,done) => {
User.findById(id,(err,user) => done(err,user) )})
}
app.js
const path = require('path')
const express = require('express')
const dotenv = require('dotenv')
const morgan = require('morgan')
const exphbs = require('express-handlebars')
const passport = require('passport')
const session = require('express-session')
const connectDB = require('./config/db')
// Load config
dotenv.config({path: './config/config.env'})
// Passport config
require('./config/passport')(passport)
connectDB()
const app = express()
// Logging
if(process.env.NODE_ENV='development') {app.use(morgan('dev'))}
// Handlebars
app.engine('.hbs',exphbs({defaultLayout:'main',extname: '.hbs'}));
app.set('view engine','.hbs');
// Sessions
app.use(session({
secret: 'keyboard cat',resave: false,saveUninitialized: false,}))
// Static folders
app.use(express.static(path.join(__dirname,'public')))
// Passport middlewar
app.use(passport.initialize())
app.use(passport.session())
// Routes
app.use('/',require('./routes/index'))
app.use('/auth',require('./routes/auth'))
const PORT = process.env.PORT || 3000
app.listen(PORT,console.log(`Server running in ${process.env.NODE_ENV} mode on ${PORT}`))
auth.js
const express = require('express')
const passport = require('passport')
const router = express.Router()
// @desc Auth with google
// @route GET /auth/google
router.get('/google',passport.authenticate('google',{ scope: ['profile'] }))
// @desc Google auth callback
// @route GET /auth/google/callback
router.get('/google/callback',{ failureRedirect: '/'}),(req,res) => {
res.redirect('/dashboard')
})
module.exports = router
我只是期待一个 console.log(profile)。有谁知道我可能哪里出错了?这是我第一次使用护照。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。