passportJS - passport-facebook 无法获取失败重定向路由
passportJS - passport-facebook cannot GET failureRedirect route
按照 passportJS docs for passport-facebook I am trying to implement express middleware for facebook authentication. I am using mongoose-findorcreate 创建 passportJS 所需的 findOrCreate 函数。
我可以重定向到 facebook 登录表单,并使用我的 facebook 凭据登录。但之后我被重定向到 failureRedirect URL 其中 return 以下内容:
Cannot GET
/auth/facebook/callback?code=AQBsq2xY-YTsNMmipM45BVBBC9W1QovO1grjC64nDe1psWuRZQwjGv8SMpXuou3s9SaVIIS0_3RqJn-SQ339wPD_TWjRPIpXpZZVHerTRZEQnQYLvt1CM0qMzG5R_JNqfYib6rkmuP4epXou5HoqUa01qszUpYfGMPHUYyNVx1VdMSu3RLbdta8rYle9am539NzYL8ihlwlflnFku-8H3QqlzWJ5Ta1pQ29N0ZyRRu38nKzrDQk-jE5Sq9WECDZ6aUX-KWvexM_5UAUJ60crUPFVxZyWwV__5N6DyDEpS9SrWKdcrpdwcMOd4u0z6mbK7os
这是我的模型:
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.
改变:
app.get('auth/facebook/callback'
至:
app.get('/auth/facebook/callback'
按照 passportJS docs for passport-facebook I am trying to implement express middleware for facebook authentication. I am using mongoose-findorcreate 创建 passportJS 所需的 findOrCreate 函数。
我可以重定向到 facebook 登录表单,并使用我的 facebook 凭据登录。但之后我被重定向到 failureRedirect URL 其中 return 以下内容:
Cannot GET /auth/facebook/callback?code=AQBsq2xY-YTsNMmipM45BVBBC9W1QovO1grjC64nDe1psWuRZQwjGv8SMpXuou3s9SaVIIS0_3RqJn-SQ339wPD_TWjRPIpXpZZVHerTRZEQnQYLvt1CM0qMzG5R_JNqfYib6rkmuP4epXou5HoqUa01qszUpYfGMPHUYyNVx1VdMSu3RLbdta8rYle9am539NzYL8ihlwlflnFku-8H3QqlzWJ5Ta1pQ29N0ZyRRu38nKzrDQk-jE5Sq9WECDZ6aUX-KWvexM_5UAUJ60crUPFVxZyWwV__5N6DyDEpS9SrWKdcrpdwcMOd4u0z6mbK7os
这是我的模型:
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.
改变:
app.get('auth/facebook/callback'
至:
app.get('/auth/facebook/callback'