目前我有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 - 没有有用的回复(在前端检索数据): 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
所以,我想知道是否有某种方法可以使用JS SDK登录LinkedIn并使用REST调用在后端检索用户数据(就像我在Oauth2中所做的那样)希望与官方文档一起使用。
答案 0 :(得分:2)
我遇到了同样的问题,我发现使用JS令牌的唯一方法是添加标头oauth_token而不是Authorization Bearer标头:
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 的前端阅读。
答案 1 :(得分:0)
我一直在努力解决同样的问题,这是我解决它的方式(不使用JS SDK):
步骤1:您将用户发送到LinkedIn登录页面,在redirect_uri param中使用端点来处理与LinkedIn相关的所有逻辑。
步骤2:当用户完成登录后,Linkedin将向该端点发送GET请求,此请求将具有“授权令牌”,此令牌只是一个临时令牌,它不允许您获取用户的数据。
步骤3:使用您刚收到的授权令牌并向Linkedin发送帖子请求
步骤4:Linkedin将向您发送一个访问令牌(这是您要查找的),现在您可以请求所有您想要的信息
第5步:将用户重定向回您的网络应用。
请求的结构以及锚标记参数可在此处获取:https://developer.linkedin.com/docs/oauth2