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

У меня возникли трудности с получением доли на 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
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
2 083
2

Ответы 2

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

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

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

Divyashree 03.04.2019 08:13

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

akshithMarolie 03.04.2019 08:45

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

akshithMarolie 03.04.2019 08:50

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

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

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

Shashank Shah 17.04.2020 13:30

Другие вопросы по теме