Google oauth20 匿名回调函数未在 passport.use 块中执行

Posted

技术标签:

【中文标题】Google oauth20 匿名回调函数未在 passport.use 块中执行【英文标题】:Google oauth20 anonymous cllback function is not being executed in passport.use block 【发布时间】:2020-06-13 06:24:47 【问题描述】:

当我转到 localhost:8000/auth/google 时,加载 google 注册页面,注册护照重定向到 callbackUrl 但未执行匿名回调函数(accessToken、refreshToken、profile、done)。如果我 console.print accessToken、refreshToken、profile 什么都没有发生。

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const keys = require('../config/keys')
const mongoose= require('mongoose')
const User = mongoose.model('User')

passport.use(
  new GoogleStrategy(
    clientID: keys.googleClientID,
    clientSecret: keys.googleClientSecret,
    callbackURL: "/auth/google/callback",
    passReqToCallback   : true
  ,
  (accessToken, refreshToken, profile,done)=>
   console.log("allgood",accessToken)
   User.findOne(googleId:profile.id)
   .then((existingUser) => 
     if (existingUser) 

     else
       new User(googleId:profile.id).save();
     
   )
    )

  )

【问题讨论】:

【参考方案1】:

其实问题出在路线上,我没有添加以下路线

app.get('/auth/google/callback',passport.authenticate('google')); 


而且在 passport.use 中不需要使用“passReqToCallback : true”。

【讨论】:

以上是关于Google oauth20 匿名回调函数未在 passport.use 块中执行的主要内容,如果未能解决你的问题,请参考以下文章

Google OAuth Api 未在登录时重定向

Google oauth20 的 Passport,未使用中间件,passport.initialize()

未在 YouTube OAuth 中获取刷新令牌

JavaScript 函数进阶函数(匿名回调递归函数)及相关练习

Google OAuth2 是不是有取消授权回调?

OAuth Google 回调抛出错误“与 localhost 的连接尝试被拒绝”