Я создал пользователя, используя passport-facebook
api.get('/facebook', passport.authenticate('facebook', {
scope: 'email'
}))
Удален пользователь
УДАЛИТЬ ИЗ ПОЛЬЗОВАТЕЛЕЙ ГДЕ электронная почта =?
Перейти # 1 для воссоздания пользователя
Но при попытке №3 возникает ошибка
Failed to deserialize user out of session
Поэтому я попытался удалить сеанс на БД
delete from sessions where session_id = 'p8TaEeb-GH87lbi-a5hpmY6YX6me6yHf'
И я попробовал # 3, это работает.
Я поставил несколько логов, чтобы проверить работоспособность passport-facebook.
passport.use(new FacebookStrategy({
clientID: config.FACEBOOK_CLIENT_ID,
clientSecret: config.FACEBOOK_CLIENT_SECRET,
callbackURL: '/api/auth/facebook/callback',
profileFields: ['id', 'name', 'email', 'displayName', 'photos']
}, async (accessToken, refreshToken, profile, done) => {
//log for checking passport-facebook works
console.log('Is it works??')
const type = 'facebook'
const nickname = profile.displayName
const email = profile.emails[0].value
const thumbnail = profile.photos[0].value
try {
let [existsUser] = await conn.query(`SELECT * FROM users WHERE email = ?`, [email])
existsUser = existsUser[0]
// is user already exists
if (existsUser) return done(null, existsUser)
const fields = { nickname, email, thumbnail, type }
await conn.query(`INSERT INTO users SET ?`, fields)
let [createdUser] = await conn.query(`SELECT * FROM users WHERE email = ?`, [email])
createdUser = createdUser[0]
return done(null, createdUser)
} catch (err) {
return done(err)
}
}))
})
Но журнал не появился, поэтому, кажется, FacebookStrategy не работает, когда я # 3
Вот мой passport.deserializeUser
passport.deserializeUser(async (id, done) => {
const sql = 'SELECT * FROM users WHERE id = ?'
const fields = [id]
try {
const [user] = await conn.query(sql, fields)
return done(null, user[0])
} catch (err) {
return done(err)
}
})
Вот мой вариант сеанса
const sessionOpt = {
name: config.SESSION_COOKIE_KEY,
secret: config.SESSION_SECRET_KEY,
resave: false,
saveUninitialized: true,
store: new MySQLStore(mysqlOpt),
cookie: {
maxAge: expiry,
httpOnly: true
},
unset: 'destroy'
}
Вот мой полный код
https://github.com/qkreltms/relay-novel-server/blob/develop/src/config/passport.js
Есть идеи?