使用 LinkedIn JS SDK 检索访问令牌以在后端使用

Retrieve Access Token with LinkedIn JS SDK to use in Back-end

目前我的 Facebook 和 LinkedIn Oauth2 流程运行良好。因为在某些情况下我不希望用户重定向到另一个页面,所以我使用工作正常的 Facebook JS SDK,检索访问令牌并将其发送到服务器,在那里我通过 REST 调用检索用户数据。

不幸的是,我在使用 LinkedIn JS SDK 时没有成功。官方文档在这方面根本没有帮助:https://developer.linkedin.com/docs/getting-started-js-sdk.

我在服务器中检索用户数据,因为在客户端很容易伪造虚假数据并将其发送到服务器,因此客户端解决方案不是一个选项。

如果我尝试在 REST API 中使用我在 js 中获得的令牌,我会得到 Invalid access token. (401)

SO 中有几个未解决的问题没有任何回应(或有用的回应):

2015-08-03 - 无响应: Javascript: Linkedin Access TOken

2016-05-29 - 无响应: can I get access token through LinknedIn JS SDK?

2016-08-31 - 没有有用的响应(数据在前端检索):

2017-06-30 - 没有有用的回复: LinkedIn OAuth token with Javascript SDK


在下面的问题中,有一条评论说明了我已经在猜测的内容:

[...] Honestly I think the JS API is completely useless like this because if you can't verify/use the token server-side you basically cannot trust any of the information.

2015-07-22 - 没有有用的响应(数据在前端检索): get linkedin Access Token with JavaScript SDK


有一些关于用 REST API OAuth 令牌交换 Javascript API 令牌的信息,但在参考资料中我发现链接已损坏(并且它会这样做不切实际,取决于复杂性,而不是像在 Facebook JS SDK 中那样直接使用令牌):

http://developer.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens https://developer-programs.linkedin.com/documents/exchange-jsapi-tokens-rest-api-oauth-tokens


所以,我想知道 是否有某种方法可以使用 JS SDK 登录 LinkedIn 并使用 REST 调用在后端检索用户数据(例如我在 Oauth2 流程中做),希望有官方文档。

我一直在为同样的问题苦苦挣扎一段时间,这是我解决它的方法(不使用 JS SDK):

第 1 步:将用户发送到 LinkedIn 登录页面,在 redirect_uri 参数中使用端点处理与 LinkedIn 相关的所有逻辑。

第 2 步:当用户完成登录后,Linkedin 将向该端点发送 GET 请求,此请求将有一个 "Authorization Token",此令牌只是一个临时令牌,不会允许您获取用户的数据。

第 3 步:使用您刚刚收到的授权令牌并向 Linkedin 发送 post 请求

第 4 步:Linkedin 将向您发回一个访问令牌(这就是您正在寻找的那个),现在您可以请求您想要的所有信息

第 5 步:将您的用户重定向回您的网络应用程序。

请求的结构以及锚标记参数可在此处获得:https://developer.linkedin.com/docs/oauth2

我遇到了同样的问题,我发现使用 JS 令牌的唯一方法是添加 header oauth_token 而不是授权承载 header:

POST https://api.linkedin.com/v1/people/~:(id,firstName,lastName,picture-url,email-address)?format=json
Headers {
  'oauth_token': JS_TOKEN
}

JS_TOKEN 我正在前端阅读 IN.ENV.auth.oauth_token