使用访问令牌, 发布到api端点https://api.linkedin.com/v1/people/ \〜 在此之后,我们收到401以下内容:
Method: POST:
URL: https://api.linkedin.com/v1/people/\~
Error:
{
"errorCode": 0,
"message": "Unable to verify access token",
"requestId": "C0DUCX81SA",
"status": 401,
"timestamp": 1421946470523
}
请帮助我理解或解决问题。
答案 0 :(得分:0)
401表示未经授权的请求。
根据错误,我认为您没有发送访问令牌。 请添加您的代码,以便让我了解更多。
<强>更新强>
您正在查询中发送令牌,这就是导致问题的原因。
LinkedIn不接受身份验证标头,并且需要一个请求参数: oauth2_access_token 。
您的标题应该是:
{
"oauth2_access_token": "Your_token_here"
}
希望这会对你有所帮助。
答案 1 :(得分:0)
您如何检索访问令牌?确保您已按照https://developer.linkedin.com/docs/oauth2下列出的步骤进行操作。
在对Profile API进行身份验证请求时,您需要在请求中添加Authorization
标头。
GET /v1/people/~ HTTP/1.1
Host: api.linkedin.com
Connection: Keep-Alive
Authorization: Bearer AQXdSP_W41_UPs5ioT_t8HESyODB4FqbkJ8LrV_5mff4gPODzOYR
答案 2 :(得分:-1)
我使用XMLHttpRequest
将访问令牌从客户端发送到服务器 let xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/' + url);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('token', this.sessionInfo.token);
并将服务器端的令牌验证为
router.route('/auth/linkedin')
.post(function verifyLinkedinAccessToken(req, res, Ltoken) {
var Ltoken = req.headers ['token'];
// Authorization: Bearer [Ltoken];
console.log('LinkedIn token from client ==== ', Ltoken);
var path = 'https://api.linkedin.com/v1/people/~?oauth2_access_token=' + Ltoken;
request(path, function (error, response, body) {
var data = JSON.stringify(body);
console.log(data);
if (!error && response && response.statusCode && response.statusCode == 200) {
var user = {
linkedinUserId: data.id,
fullName: data.name
};
var jtoken = jwt.sign({ linkedinUserId: data.id }, 'twinesoft', { expiresIn: '3h' });
res.json(jtoken);
}
else {
console.log(data.error);
}
});
在此之后,我们收到401以下内容:
{
"errorCode": 0,
"message": "Unable to verify access token",
"requestId": "C0DUCX81SA",
"status": 401,
"timestamp": 1421946470523
}