如何使用Passport.js将帐户链接/授权在一起

时间:2019-05-09 14:58:09

标签: node.js authentication oauth-2.0 authorization passport.js

我遇到的问题是,我正在尝试使用password.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);
      });
  }
));
  • Google回调

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帐户链接到该用户的本地帐户,而不是单独创建。

非常感谢

伊桑

0 个答案:

没有答案