我正在为我的网站使用passport-facebook策略以及其他身份验证方法。现在,我希望将用户重定向到包含通过suer的facebook帐户访问的信息的表单,而不是将用户在身份验证后直接重定向到仪表板。我正在使用react / redux作为前端,并使用axios将请求发送到后端。但是,从这里到那里阅读时,我得出的结论是axios不支持护照的oAuth流程。因此,现在我必须在“使用脸书登录”按钮按钮中使用href
整个过程如下:
1)用户单击按钮
<Button color='blue' href='http://localhost:5000/api/auth/facebook'>Login with Facebook</Button>
2)将用户重定向到fb同意屏幕以进行身份验证。这也发生,我将响应返回到控制台。我从个人资料中提取了姓名和电子邮件。
3)现在,我希望将用户重定向到一个表单,该表单将包含从硬编码的fb帐户获取的电子邮件和名称以及一些其他字段供用户填写。 但是我不知道如何将数据发送到前端。
我的fbRoute.js文件
router.get('/auth/facebook',
passport.authenticate('facebook', {scope:['email']})
);
router.get('/auth/facebook/callback',
passport.authenticate( 'facebook'), (req, res) => {
res.redirect('/login')});
router.get('/', (req,res) => {
res.json('Works!')
})
我的password.js文件
module.exports = ( passport ) => {
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "http://localhost:5000/api/auth/facebook/callback",
profileFields: ['id', 'displayName', 'photos', 'email']
},
function(accessToken, refreshToken, profileFields, done) {
const userDetails= {
firstName: profileFields.displayName,
email: profileFields.emails[0].value
}
console.log(userDetails)
}
));
}
我希望不要将其发送给前端表单,而只是安慰它。我应该怎么办?