我有同样的问题:
如何使用 node-auth 发布到 LinkedIn“共享”?
本质上,我使用的是linkedin-js NPM 模块,它非常适合GET 请求。我将该模块与护照结合使用,并成功生成了 oauth 令牌和秘密。当 POST 不能用于消息传递时,我进入 oauth 依赖库并将所有 Content-Type 标头更改为 application/json 并将 X-li-format 标头更改为 json。此外,我所有的其他基地都被覆盖了。我在范围内设置了“w_messages”,其他请求正在运行。
我真的不需要 x-li-format 标头,因为我有 application/json 标头。我唯一能想到的是访问令牌已关闭(也许我错过了一个步骤 - 这不太可能,因为所有其他需要身份验证的请求)或明文签名被 application/json Content-Type 抛出(以下错误不抛出):
if( signatureMethod != "PLAINTEXT" && signatureMethod != "HMAC-SHA1")
throw new Error("Un-supported signature method: " + signatureMethod )
我从此错误消息中走了出来:
{ statusCode: 401,
data: '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<error>\n <status>401</status>\n <timestamp>1375876823051</timestamp>\n
<request-id>0WFU40UZP8</request-id>\n <error-code>0</error-code>\n <message>[unauthorized]. OAU:fgb949d9gb66|427a55ea-a05e-4494-88f5-a33230bd719a|*01|*01:1375876915:WWqVTAe9WQneEf8ezL6Yl7DMyV4=</message>\n</error>\n' }
对于此错误消息:
{ statusCode: 401,
data: '{\n "errorCode": 0,\n "message": "[unauthorized].
OAU:fgb949d9gb66|ce1f124c-1e10-4abc-8777-55bbd9621100|*01|*01:1375913097:EH90Q69mhGRwiCVcknimzAUnLqI=",\n
"requestId": "KOYHE8K0M6",\n "status": 401,\n "timestamp": 1375913004009\n}' }
这是 api 调用和相应的 oauth 调用:
linkedinClient.apiCall('POST', '/people/~/mailbox',
{
"token": {
"oauth_token_secret": tokenSecret
, "oauth_token": token
},
"mailbox-item": {"recipients": {
"values": [
{
"person": {
"_path": people,
}
}]
},
"subject": subject,
"body": body}
}
, function (error, result) {
if (result){
req.io.emit('success', {success : "LinkedIn message sent successfully."});
}
console.log(error);
}
);
var CLIENT = {
oauth: new OAuth(
'https://api.linkedin.com/uas/oauth/requestToken'
, 'https://api.linkedin.com/uas/oauth/accessToken'
, key
, secret
, '1.0A'
, redirect
, 'HMAC-SHA1'
, null
, {'Accept': '*/*', 'Connection': 'close', 'X-li-format': 'json', 'Content-Type': 'application/json'}
)
}
CLIENT.oauth.post(
_rest_base + path
, token.oauth_token
, token.oauth_token_secret
, params
, 'application/json'
, requestCallback(callback)
);