passportJS - passport-facebook 无法获取失败重定向路由

Posted

技术标签:

【中文标题】passportJS - passport-facebook 无法获取失败重定向路由【英文标题】:passportJS - passport-facebook cannot GET failureRedirect route 【发布时间】:2017-03-23 09:04:09 【问题描述】:

在护照-facebook 的passportJS docs 之后,我正在尝试实现快速中间件以进行 facebook 身份验证。我正在使用mongoose-findorcreate 创建passportJS 所需的findOrCreate 函数。

我可以重定向到 facebook 登录表单,并使用我的 facebook 凭据登录。但之后我被重定向到 failureRedirect URL,它返回以下内容:

无法获取 / AUTH /实/回调?代码= AQBsq2xY-YTsNMmipM45BVBBC9W1QovO1grjC64nDe1psWuRZQwjGv8SMpXuou3s9SaVIIS0_3RqJn-SQ339wPD_TWjRPIpXpZZVHerTRZEQnQYLvt1CM0qMzG5R_JNqfYib6rkmuP4epXou5HoqUa01qszUpYfGMPHUYyNVx1VdMSu3RLbdta8rYle9am539NzYL8ihlwlflnFku-8H3QqlzWJ5Ta1pQ29N0ZyRRu38nKzrDQk-jE5Sq9WECDZ6aUX-KWvexM_5UAUJ60crUPFVxZyWwV__5N6DyDEpS9SrWKdcrpdwcMOd4u0z6mbK7os P>

这是我的模型:

const mongoose = require('mongoose');
const findOrCreate = require('mongoose-findorcreate');

// Schema definition
const userSchema = mongoose.Schema(
  provider: String,
  id: String,
  displayName: String,
  name: [
    familyName: String,
    givenName: String,
    middleName: String,
  ],
  emails: [
    value: String,
    type: String,
  ],
  photos: [
    value: String,
  ],
);

userSchema.plugin(findOrCreate);

// Compile model from schema
module.exports = mongoose.model('User', userSchema);

应用程序的护照部分:

passport.use(new FacebookStrategy(
    clientID: conf.facebookClientID,
    clientSecret: conf.facebookSecret,
    callbackURL: 'http://localhost:3000/auth/facebook/callback',
  ,
  function(accessToken, refreshToken, profile, done) 
    User.findOrCreate(function(err, user) 
      if (err)  return done(err); 
      done(null, user);
    );
  
));

// Authentication routes
app.get('/auth/facebook', passport.authenticate('facebook'));

app.get('auth/facebook/callback',
  passport.authenticate('facebook', 
    successRedirect: 'http://localhost:3000/words',
    failureRedirect: 'http://localhost:3000/auth/facebook',
  ));

我试图弄清楚为什么登录失败,以及为什么用户没有被写入我的数据库(我可以查询数据库中的其他内容,因此我知道连接是有效的)。

如果您需要有关该项目的更多信息,请询问,我将编辑问题。也可以查看gitHub repo。

【问题讨论】:

【参考方案1】:

改变:

app.get('auth/facebook/callback'

到:

app.get('/auth/facebook/callback'

【讨论】:

呃,就这么简单。谢谢

以上是关于passportJS - passport-facebook 无法获取失败重定向路由的主要内容,如果未能解决你的问题,请参考以下文章

PassportJS - FacebookTokenStrategy 返回 404

同时使用 JWT 和 Passportjs

PassportJs 身份验证无限循环和执行(默认)查询

PassportJS、NestJS:AuthGuard('jwt') 的 canActivate 方法

Passportjs 的会话问题

使用 Passportjs 刷新页面后保持身份验证