Время ожидания запроса истекло [LINKEDIN API] - PullRequest
0 голосов
/ 09 мая 2019

Мне нужно использовать LinkedIn API для обмена мультимедиа. Я в настоящее время прибыл, чтобы получить токен и получить данные профиля. Так что проблема в том, что я не могу публиковать медиа в этом URL "

Как поделиться на LinkedIn, используя REST-API v2?

Я хочу сделать это, но в моем случае это не работает

Я создал класс с методами. Я не могу поместить весь свой код, потому что он слишком длинный, но я могу подробно рассказать, что такое роль функции, поэтому

login_url () -> Разрешить мне получить код

set_access_token () -> Позвольте мне обменяться кодом с access_token

set_user_urn -> Позвольте мне установить user_urn, полезный для публикации данных в функции обмена. Мой код урны похож на XXXXXX-XXX. Подскажите, если это хороший формат

public function share() {
    $url = "https://api.linkedin.com/v2/ugcPosts" . $this->_access_token;

    $fields = '{
        "author": "urn:li:person:' . $this->_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"
        }
    }';

var_dump($fields);


    $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_SSL_VERIFYPEER, false);

    $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);

}

Я получаю следующее сообщение об ошибке:

{"author": "urn: li: person: XXXXXX-XXX", "lifecycleState": "PUBLISHED", "specificContent": {"com.linkedin.ugc.ShareContent": {"shareCommentary": {" text ":" Hello World! Это моя первая публикация в LinkedIn! " }, "shareMediaCategory": "NONE"}}, "visibility": {"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"}} "{" message ":" Время запроса истекло "," status ": 504}

1 Ответ

0 голосов
/ 09 мая 2019

Я поместил этот заголовок:

$ headers = array ('Content-Type: text / plain');

Согласно этому сообщению = Как разместить необработанные данные телас curl? , CURL установлен по умолчанию 'Content-Type: application / x-www-form-urlencoded'.

// функция обмена

public function share() {
$url = "https://api.linkedin.com/v2/ugcPosts?oauth2_access_token=" . $this->_access_token;

        $headers = array('Content-Type: text/plain');

        $fields = '{
            "author": "urn:li:person:XXXXXX-XXX",
            "lifecycleState": "PUBLISHED",
            "specificContent": {
                "com.linkedin.ugc.ShareContent": {
                    "shareCommentary": {
                        "text": "Hello World! This is my first Share on LinkedIn2!"
                    },
                    "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);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

        $httpCode = curl_getinfo($curl , CURLINFO_HTTP_CODE); // this results 0 every time
        $response = curl_exec($curl);

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

        curl_close($curl);

        return stripslashes($response);

    }
...