第一次使用护照,我意识到当我在策略回调中记录数据时,它不会显示在控制台中,它是如何工作的,还是我做错了什么?
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'] }));
答案 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",