目前我有Facebook和LinkedIn Oauth2流程正常工作 . 因为在某些情况下我不希望用户重定向到另一个页面,我使用工作正常的Facebook JS SDK,检索访问令牌并将其发送到我通过REST调用检索用户数据的服务器 .
不幸的是,在这方面我完全没有帮助: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 - 没有有用的回复(在前端检索数据):How to Get Access Token Using LinkedIn API JavaScript SDK
2017-06-30 - 没有帮助回复:LinkedIn OAuth token with Javascript SDK
在下面的问题中,有一条评论说我正在猜测:
[...]老实说我认为JS API完全没用,因为如果你无法验证/使用令牌服务器端,你基本上不能信任任何信息 .
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
所以,我想知道是否 there is some way to login with LinkedIn using the JS SDK and retrieve the user data in the back-end using REST calls (就像我在Oauth2流程中所做的那样),希望有官方文档 .
2 回答
我遇到了同样的问题,我发现使用JS令牌的唯一方法是添加标头oauth_token而不是Authorization Bearer标头:
JS_TOKEN我正在阅读 IN.ENV.auth.oauth_token 的前端 .
我一直在努力解决同样的问题,这是我解决它的方式(不使用JS SDK):
步骤1:您将用户发送到LinkedIn登录页面,在redirect_uri param中使用 endpoints 来处理与LinkedIn相关的所有逻辑 .
步骤2:当用户完成登录后,Linkedin将向该 endpoints 发送GET请求,此请求将具有“授权令牌”,此令牌只是一个临时令牌,它不允许您获取用户的数据 .
第3步:使用您刚刚收到的授权令牌,并向Linkedin发送帖子请求
第4步:Linkedin将向您发送一个访问令牌(这是您正在寻找的那个),现在您可以请求您想要的所有信息
第5步:将用户重定向回您的网络应用 .
请求的结构以及锚标记参数可在此处获得:https://developer.linkedin.com/docs/oauth2