我遇到的问题是,我正在尝试使用password.js将我的应用程序上的多个帐户授权/链接在一起,但是找不到轻松实现此目的的方法。
Passport.js提供了一种对“授权”帐户的解决方案,但是我不知道如何实现这一点,因为我对技术不是很熟悉,但是会尝试做得更好。
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帐户链接到该用户的本地帐户,而不是单独创建。
非常感谢
伊桑