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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...