2017-01-16 39 views
0

我已經花了一天的時間在這個問題上,並閱讀stackoverflow噸答案,但仍然無法弄清楚。LinkedIn REST API - 公司分享|使用JSON或XML,都失敗

我想使用REST API在LinkedIn公司頁面上發佈信息。 我已經有一個通過OAuth2 API($ secret_token)檢索到的令牌,我也有一個用戶擁有管理權限($ company_ID)的公司ID,我已經通過cURL執行了多個「GET」,沒有任何問題。

使用控制檯(https://apigee.com/console/linkedin)我可以做我想做的事。但是一旦翻譯成PHP,我就無法實現它的功能。

這是我的代碼:

// USING XML POST 
$postfields = ' 
<xml> 
    <share> 
     <visibility> 
      <code>anyone</code> 
     </visibility> 
     <comment>There are a lot of great career opportunities here!</comment> 
    </share> 
</xml>'; 

$headers = array('header' => 
    "Authorization: Bearer " .$secret_token. "\r\n". 
    'Content-Length: ' . strlen($postfields). "\r\n". 
    'Content-Type: text/xml'. "\r\n" 
); 

$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_URL => "https://api.linkedin.com/v1/companies/".$company_id."/shares?format=json", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => 2, 
    CURLOPT_HEADER => false, 
    CURLOPT_POST => 1, 
    CURLOPT_HTTPHEADER => $headers, 
    CURLOPT_POSTFIELDS => $postfields 
)); 
$result = curl_exec($ch); 
curl_close($ch); 
$result = json_decode($result, true); 
print_r($result); 

這顯示:

陣列([的errorCode] => 0 [消息] =>無法解析共享文件:錯誤:意外元素: CDATA [的requestId] => IWMFAAIY5E [狀態] => 400 [時間戳] => 1484563199667)

好了,現在做同樣使用JSON代替(因爲二者都通過LinkedIn REST API允許):

// USING JSON POST 
$postfields = '{"visibility": { "code": "anyone" }, "comment": "There are a lot of great career opportunities here!"}'; 

$headers = array('header' => 
    "Authorization: Bearer " .$secret_token. "\r\n". 
    'Content-Length: ' . strlen($postfields). "\r\n". 
    'Content-Type: application/json'. "\r\n". 
    "x-li-format: json". "\r\n" 
); 

$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_URL => "https://api.linkedin.com/v1/companies/".$company_id."/shares?format=json", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_SSL_VERIFYPEER => false, 
    CURLOPT_SSL_VERIFYHOST => 2, 
    CURLOPT_HEADER => false, 
    CURLOPT_POST => 1, 
    CURLOPT_HTTPHEADER => $headers, 
    CURLOPT_POSTFIELDS => $postfields 
)); 
$result = curl_exec($ch); 
curl_close($ch); 
$result = json_decode($result, true); 
print_r($result); 

它現在顯示:

陣列([的errorCode] => 0 [消息] =>無法解析JSON體:意外字符( 'C'(代碼67)):預測的有效值(數字,字符串,數組,對象,'true','false'或'null')at [Source:[email protected]; line:1,column:2] [requestId] => HIRNMKAQTC [status] => 400 [timestamp] => 1484564171949)

任何想法?

+0

沒有回答到目前爲止 - 難道是因爲沒有人有線索,還是有一些基本的信息,從我的問題丟失? – Andrew

+0

應該可能是: <?xml version =「1.0」encoding =「UTF-8」> –

回答

1

在您的$頭變量,刪除結尾爲「\ r \ n」個

$headers = array('header' => 
    "Authorization: Bearer " .$secret_token. "\r\n". 
    'Content-Length: ' . strlen($postfields). "\r\n". 
    'Content-Type: application/json'. "\r\n". 
    "x-li-format: json" 
);