2

私はこれと同じ問題を抱えています:

node-authでLinkedInの「シェア」に投稿するには?

基本的に、GET リクエストでうまく機能する linkedin-js NPM モジュールを使用しています。パスポートと組み合わせてモジュールを使用しており、oauth トークンとシークレットを正常に生成しています。メッセージングで POST が機能しなかったとき、oauth 依存関係ライブラリに移動し、すべての Content-Type ヘッダーを application/json に変更し、X-li-format ヘッダーを json に変更しました。また、私の他のすべての拠点がカバーされています。スコープに「w_messages」が設定されており、他のリクエストが機能しています。

application/json ヘッダーがあるため、x-li-format ヘッダーは実際には必要ありません。私が考えることができる唯一のことは、アクセストークンがオフになっていることです(おそらく私が見逃しているステップです-認証を必要とする他のすべてのリクエストが機能するため、これはありそうにありません)またはプレーンテキストの署名がアプリケーション/jsonコンテンツタイプによってスローされます(次のエラーはスローされません):

  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)
  );
4

0 に答える 0