Как поделиться в LinkedIn с помощью REST-API v2?

#php #api #linkedin #php-curl

#php #API #LinkedIn #php-curl

Вопрос:

У меня возникли трудности с получением общего доступа к linkedin. Я пытаюсь опубликовать общий доступ к LinkedIn через linkedin api v2, и каждый раз, когда я делаю запрос post, я получаю ответ на запрос с истекшим временем ожидания (статус 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
}
  

Ответ №1:

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

 $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. Идентификатор УРНЫ пользователя должен быть заменен идентификатором урны пользователя, который должен быть сгенерирован другим вызовом API — см. URN ID API для получения более подробной информации о том, как этого добиться.

Комментарии:

1. Спасибо. Но когда я запускаю с измененным кодом, я получаю приведенное ниже сообщение об ошибке. {«serviceErrorCode»: 65604, «сообщение»: «Пустой токен доступа oauth2», «статус»: 401}

2. @Divyashree, ммм … Я не получаю никакой ошибки. Не могли бы вы, пожалуйста, обновить весь код, который вы используете прямо сейчас.

3. @Divyashree… рад узнать, что вы решили эту проблему. Но я получаю ошибку «Предоставлен токен множественного доступа», когда я использую этот URL, вот почему я изменил его.

Ответ №2:

ПРОБЛЕМА РЕШЕНА

Добавлен 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);
  

Комментарии:

1. Но как нам получить access_token? Я получаю следующую ошибку. { «serviceErrorCode»: 65604, «сообщение»: «Пустой токен доступа oauth2», «статус»: 401 }