使用Passport的Node.js-使用LinkedIn登录

时间:2018-08-17 17:40:25

标签: node.js linkedin

我有以下无法更改的解决方案。它以这种方式与Google和Facebook配合使用:在前端用户使用Google或Fb登录并接收访问令牌(不使用回调)。然后将令牌传递到后端服务器,并通过护照进行验证。示例:

对于FB:

while(mysqli_stmt_fetch($stmt)) {
  $data[] = array('bdi' => $bdi, 'date' => $date);
}

,对于Google:

router.post(
    '/auth/facebook',
    passport.authenticate('facebook-token', {session: false}),
    nextMiddleware
);

很遗憾,此解决方案不适用于LinkedIn。如果在请求正文中同时传递了FB和Google访问令牌,则我假设护照解析提供的JWT令牌并从中提取所有信息。

我正在为LinkedIn尝试相同的解决方案:

router.post('/auth/google',
    passport.authenticate('google-id-token'),
    nextMiddleware
);

问题在于护照中间件始终返回401未经授权。如何将访问令牌传递给此端点?我将令牌作为请求正文传递,与FB和Google中相同,但不起作用。 第二个问题是我无法解码LinkedIn令牌。它不是Google或FB中的JWT令牌,我可以解码并获取有关用户的信息。这是什么样的代币?如何使用它来获取有关用户的信息?我尝试了https://api.linkedin.com/v1/people/~?oauth2_access_token= {TOKEN}和https://api.linkedin.com/v1/companies?format=json&is-company-admin=true&oauth2_access_token= {TOKEN},但总是收到“无效的访问令牌”响应。

请注意,我无法更改其工作方式。前端从社交网站获取访问令牌,然后将该令牌发送到后端,以接收后端服务器发出的JWT。

0 个答案:

没有答案