Passport不叫回调

时间:2016-07-15 20:08:34

标签: node.js express passport.js

第一次使用护照,我意识到当我在策略回调中记录数据时,它不会显示在控制台中,它是如何工作的,还是我做错了什么?

passport.use(new GoogleStrategy({
  clientID: process.env.GOOGLE_CLIENT_ID,
  clientSecret: process.env.GOOGLE_CLIENT_SECRET,
  callbackURL: process.env.CALLBACK_URL,
  passReqToCallback: true
}, function (accessToken, refreshToken, profile, done) {
    console.log('this should be displayed');
    done(profile)
  }
);

路线看起来像这样:

app.get('/api/v1/authenticate/google', passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login'] }));

2 个答案:

答案 0 :(得分:1)

我有同样的问题并通过调用身份验证来解决它:

passport.authenticate('facebook', {
    scope: ['email', 'public_profile', 'user_likes', 'user_birthday'],
    callbackURL: "http://localhost:1337" + req.url
}, function (err, user) {
    if (err) return res.negotiate(err);
    // Do something
})(req, res, next);

答案 1 :(得分:-1)

如果设置from supporting_files.a import func,则会以passReqToCallback:true作为第一个参数调用您的回调。

你应该把它称为 req, 所以function (req, accessToken, refreshToken, profile, done)将处于正确的位置。

编辑: 我意识到你的意思是主要的回调。 这是一个两步过程,因此process.env.CALLBACK_URL也应该指向注册了护照中间件的路线。

来自文档:

如果done

callbackURL: "http://yourdormain:3000/auth/google/callback",