如何使用Passport-facebook策略将数据发送到REST APIS的前端?

时间:2019-12-19 17:47:42

标签: node.js reactjs redux passport.js passport-facebook

我正在为我的网站使用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)
}
));
}

我希望不要将其发送给前端表单,而只是安慰它。我应该怎么办?

0 个答案:

没有答案