LinkedIn没有阅读JSON请求

时间:2018-02-13 11:03:49

标签: json xml linkedin linkedin-api

尝试分享'在LinkedIn:https://developer.linkedin.com/docs/share-on-linkedin

这基本上是对{' https://api.linkedin.com/v1/people/~/shares?format=json' 最简单的形式是json:

{
  "comment": "Check out developer.linkedin.com! http://linkd.in/1FC2PyG",
  "visibility": {
    "code": "anyone"
  }
}

这需要设置http标头:

Content-Type: application/json
x-li-format: json

我尝试使用OAuth.io尝试这样做,但LinkedIn似乎仍然在阅读XML格式的正文。

请参阅我的示例:https://jsfiddle.net/Lv3jtpkb/2/

我从中得到以下错误:

Invalid xml {Element 'share@http://api.linkedin.com/v1' with element-only content type cannot have text content.}

我已经检查过从OAuth.io服务器到LinkedIn API端点,前端指定的标头是否以某种方式被更改,并且可以确认它们没有。

1 个答案:

答案 0 :(得分:0)

你几乎就在那里。有2个错误。

  1. 您的数据被格式化为JS对象。您正在使用的方法似乎并没有自动将对象转换为JSON。

  2. 这行代码没有做任何事情,导致例外:

    .then(user => { console.log("next:",user) })
    

    将其删除。

  3. 工作代码段:

    $('#linkedin-button').on('click', function() {
    // Initialize with your OAuth.io app public key
    OAuth.initialize('A5oDtHv-oUEVlR7q7hDolXxC7RE');
      alert('init');
      OAuth.popup('linkedin2').then(linkedin => {
      alert('logged in');
        linkedin.post({
          url: "/v1/people/~/shares?format=json",
          data: JSON.stringify({
            "comment": "Hello world!",
            "visibility": {
              "code": "anyone"
            }
          }),
          headers: {
             "x-li-format": "json",
             "Content-Type": "application/json"
          }
        }).then(data => {
          console.log("success:", data);
          }).fail(err => { console.log("err:",err) });
      })
    })
    

    控制台成功:
    enter image description here