Проблема, с которой я столкнулся, заключается в том, что я пытаюсь авторизовать / связать несколько учетных записей в моем приложении вместе, используя passport.js, но не могу найти способ сделать это легко.
Passport.js предоставляет решение для "Авторизации" учетных записей, но я не знаю, как это реализовать, поскольку я не очень разбираюсь в технологиях, но пытаюсь стать лучше.
- Стратегия Google для аутентификации
passport.use(new GoogleStrategy({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/google/callback",
userProfileURL: "https://www.googleapis.com/oauth2/v3/userinfo"
},
function(accessToken, refreshToken, profile, cb) {
console.log(profile);
Customer.findOrCreate({
googleId: profile.id,
firstName: profile.name.givenName,
lastName: profile.name.familyName
},
function(err, user) {
return cb(err, user);
});
}
));
router.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/signin' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});
const customerSchema = new mongoose.Schema({
googleId: String,
facebookId: String,
firstName: String,
lastName: String,
username: String,
password: String,
address: [addressSchema],
role: {
type: String,
default: 'customer'
}
});
Идеальным сценарием было бы то, что пользователь может успешно создать локальную учетную запись, а затем в будущем пользователь решил создать учетную запись Google, после чего учетная запись Google связывается с локальной учетной записью пользователя, а не создается отдельно.
Большое спасибо
Этан