如果我使用jwt auth,将facebook个人资料链接到现有帐户的正确方法是什么?

时间:2017-08-23 20:33:24

标签: node.js facebook express passport.js

阅读很多有关主题的内容,但无法找到将现有本地策略帐户与Facebook策略帐户相关联的美妙方式。

问题是我有JWT授权,所以如果用户点击"连接FB帐户"按钮,他重定向到Facebook,而不是回到没有JWT的服务器。有没有办法发送带有一些用户身份的FB请求,在回调网址中回复给我?

将FB帐户链接到当前登录用户的正确方法是什么?

UPD 找到了一种使用参数发送请求/获取回调的方法:

const facebook = new FacebookStrategy.Strategy({
    ...facebookConfigAndScopes,
    passReqToCallback: true
  },
  (req, accessToken, refreshToken, profile, done) => {console.log(req.params.id);}
);

userRouter.route('/auth/facebook/:id')
.get((req, res, next) => passport.authenticate('facebook', {
    scope: ['public_profile'],
    callbackURL: '/api/user/auth/facebook/callback/'+req.params.id
  })(req, res, next)
);

userRouter.route('/auth/facebook/callback/:id')
.get(
  (req, res, next) =>  passport.authenticate('facebook', { callbackURL: '/api/user/auth/facebook/callback/'+req.params.id })(req, res, next),
);

所以我可以发送用户哈希来识别现有用户。

1 个答案:

答案 0 :(得分:0)

使用state参数将令牌传递给Facebook。 Facebook将在调用回调网址时在state参数中添加数据。

更多信息: https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#logindialog