Как конвертировать вызов curl с помощью «-i --upload-file» в PHP? - PullRequest
0 голосов
/ 23 февраля 2019

На этот вызов ссылаются в шаге 2 документов здесь

Я следую за документами, чтобы создать общий доступ к изображениям и текстам в LinkedIn через API версии 2.Следуя инструкциям в документации, я завершил каждый шаг с успешным ответом.Однако мое сообщение не существует в LinkedIn и не может быть просмотрено по прямой ссылке на основе идентификатора, возвращенного запросом API

При отладке я сделал запрос на получение https://api.linkedin.com/v2/assets/C5622AQFbyxMfU2b9zg. Это для получениямедиаресурс (документы здесь ), созданный на первом шаге.Он вернул следующий json со статусом «CLIENT_ERROR».Однако, если вы посмотрите на документы, это не тот статус, который указан для поля

{
    "serviceRelationships": [
        {
            "identifier": "urn:li:userGeneratedContent",
            "relationshipType": "OWNER"
        }
    ],
    "recipes": [
        {
            "recipe": "urn:li:digitalmediaRecipe:feedshare-image",
            "status": "CLIENT_ERROR"
        }
    ],
    "mediaTypeFamily": "STILLIMAGE",
    "created": 1550875198973,
    "lastModified": 1550875199857,
    "id": "C5622AQFbyxMfU2b9zg",
    "status": "ALLOWED"
}

Мне удалось успешно загрузить файл с помощью командной строки curl.Кажется, проблема в моей реализации PHP.В частности, загрузка двоичного файла не работает правильно.Вот упрощенное представление моего php-кода.

    $ch = curl_init();

    $headers = [
        'Authorization: Bearer ' . $this->accessToken->access_token,
        'Cache-Control: no-cache',
        'X-RestLi-Protocol-Version: 2.0.0',
        'x-li-format: json',
        'Content-Type: ' . $this->mimetype
    ];

    $data = [
        'file' => curl_file_create($filename, $this->mimetype);
    ];

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_URL, 'https://api.linkedin.com/mediaUpload/C5622AQHSLBWkZeg-gQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQJIFvVUxXl7yAAAAWkwjT0kEPKHY5BnAgXETcVQ3AbsxmvaGl6hnuECwA&app=22961836&sync=0&v=beta&ut=2RaKRdHD_OwUE1');
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);
    print_r($result);
...