Как поделиться на LinkedIn, используя REST-API v2? - PullRequest
1 голос
/ 02 апреля 2019

У меня возникли трудности с получением доли на linkedin.Я пытаюсь опубликовать общий ресурс LinkedIn с помощью linkedin api v2, и каждый раз, когда я делаю пост-запрос, я получаю ответ от сервера с истекшим сроком ожидания (статус 504).Вот мой код:

$url = https://api.linkedin.com/v2/ugcPosts?oauth2_access_token=".$row[0]['accesstoken'];
$fields = '{
    "author": "urn:li:person:XXX",
    "lifecycleState": "PUBLISHED",
    "specificContent": {
        "com.linkedin.ugc.ShareContent": {
            "shareCommentary": {
                "text": "Hello World! This is my first Share on LinkedIn!"
            },
            "shareMediaCategory": "NONE"
        }
    },
    "visibility": {
        "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
    }
}';

$headers = array(
 'Content-Type' => 'application/json',
 'X-Restli-Protocol-Version' => '2.0.0'
 'Authorization' => 'Bearer'. $token);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($curl);

And here is the error message :
{
  "message": "Request timed out",
  "status": 504
}

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Попробуйте код ниже:

$url = "https://api.linkedin.com/v2/ugcPosts";

$headers = array('Content-Type: application/json','X-Restli-Protocol-Version: 2.0.0','x-li-format: json','Authorization: Bearer '.$token);

$fields = '{
    "author": "urn:li:person:*Person URN ID*",
    "lifecycleState": "PUBLISHED",
    "specificContent": {
        "com.linkedin.ugc.ShareContent": {
            "shareCommentary": {
                "text": "Hello World! This is my first Share on LinkedIn!"
            },
            "shareMediaCategory": "NONE"
        }
    },
    "visibility": {
        "com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
    }
}';


$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields);
$httpCode = curl_getinfo($curl , CURLINFO_HTTP_CODE); // this results 0 every time
$response = curl_exec($curl);

if ($response === false) 
    $response = curl_error($curl);

echo stripslashes($response);

curl_close($curl);
  1. Правильный URL-адрес вызова API - https://api.linkedin.com/v2/ugcPosts (Вы не должны включать ?oauth2_access_token= в URL-адрес)

  2. По какой-то причине заданный вами формат массива заголовков выдает ошибку. Поэтому я изменил его.

  3. Идентификатор URN человека должен быть заменен идентификатором URN пользователя, который должен быть сгенерирован другим вызовом API - для получения дополнительной информации см. API URN ID о том, как этого добиться.

0 голосов
/ 03 апреля 2019

ВЫПУСК РЕШЕНО

Добавлен access_token как в URL, так и в заголовке. Теперь код работает. Кроме этого все остается тем же.

$url      = "https://api.linkedin.com/v2/ugcPosts?oauth2_access_token=".$this->accesstoken;

$headers = array('Content-Type:application/json','X-Restli-Protocol-Version:2.0.0','x-li-format: json','Authorization:    Bearer'.$this->accesstoken);
...