1

我正在尝试使用 vue-authenticate 和护照来实现 facebook 登录。我成功登录了我的 Facebook 帐户。我成功获得了“回调代码”。这是我的回调网址

http://localhost:8080/auth/callback?code=AQD0FgQ7I2oci0m3bqOHOBE1EV3Ri1TBnVcqs2PRT8pFNa38NIMX-eYiSr2EiWKQBMoNq1yOeo1QkDG1OiDjF_xUduK-HWMlMazsaBzoGNxiAK3FQH5KQopZ9NUnM2g-UYLpihtpsaFrRVssJkm8Xue1nyKbbWX76EPnPCIEVOfGM_JE4mbENLpp6_w8gwkTS9n8dtsNptDM72UO9zE7mj34J8Yls0A1VqmoZail0J2zwu4hJCzAzbP2FZ531Vo2tCERn2F_4DKsJ-zq_ppZWxRlKuRW9WFBL0UvsuNN_ODiRFs70P3SoK85-xHwzHJvx8VrVxmLlp5x7rVOzy2E2Jma# =

所以我使用 axios 将“回调代码”传递给服务器。因为我的服务器代码(passport-facebook)是这样的:

router.route('/auth/facebook/callback').get(passport.authenticate('facebook', {
      successRedirect : '/',
      failureRedirect : '/'
    }));

Vue中的axois代码是

this.$http.get('/api/users/auth/facebook/callback',{
      params:{
        code : this.param
      }
    })
    .then((response) => {
      this.movies = param;
    })

但它从来没有用过..我不知道为什么。只是想知道,我将 axios 代码更改为get('api/users/'). 并像这样编写服务器代码

router.get('/',()=>{
  console.log("good");
});

有用。我可以在控制台中看到“好”消息。让我知道您是如何实现社交登录的!

4

1 回答 1

1

如果你想用护照配置 Facebook 登录所以你可以简单地按照这些步骤如下所述:

步骤 1. 添加护照配置

const passport = require('passport');
app.use(passport.initialize());
app.use(passport.session());

app.get('/success', (req, res) => res.send("You have successfully logged in"));
app.get('/error', (req, res) => res.send("error logging in"));

passport.serializeUser(function(user, cb) {
  cb(null, user);
});

passport.deserializeUser(function(obj, cb) {
  cb(null, obj);
});

步骤 2. 设置 facebook 配置

const FacebookStrategy = require('passport-facebook').Strategy;

const FACEBOOK_APP_ID = 'your app id';
const FACEBOOK_APP_SECRET = 'your app secret';

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "/auth/facebook/callback"
  },
  function(accessToken, refreshToken, profile, cb) {
      return cb(null, profile);
  }
));

app.get('/auth/facebook',
  passport.authenticate('facebook'));

app.get('/auth/facebook/callback',
  passport.authenticate('facebook', { failureRedirect: '/error' }),
  function(req, res) {
    res.redirect('/success');
  });

这将解决您的问题

请参考此链接https://www.sitepoint.com/passport-authentication-for-nodejs-applications/

于 2020-04-29T04:34:08.613 回答