图片上传在Linkedin V2 API中不起作用

我觉得

我现在正在将Linkedin V2与我的应用程序集成。尝试将图像上传到Linkedin时遇到问题。

我已经从终端尝试了CURL请求(我正在使用Ubuntu OS),并得到如下响应:

终端命令(工作和文件上传):

curl -i --upload-file /Users/peter/Desktop/superneatimage.png --header "Authorization: Bearer redacted" 'https://api.linkedin.com/mediaUpload/C5522AQGTYER3k3ByHQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQJbrN86Zm265gAAAWemyz2pxPSgONtBiZdchrgG872QltnfYjnMdb2j3A&app=1953784&sync=0&v=beta&ut=2H-IhpbfXrRow1'

它的响应如下:

HTTP / 2 201日期:UTC 2019年4月10日星期三09:14:44服务器:播放set-cookie:lang = v = 2&lang = en-us; 路径= /; Domain = api.linkedin.com x-ambry-creation-time:Wed Apr 10 09:14:44 UTC 2019 access-control-allow-origin:https ://www.linkedin.com content-length:0

将CURL请求集成到应用程序中时遇到问题我的应用程序中的CURL请求代码如下所示。

$headers = array();
$headers[] = 'Authorization: Bearer xxxxx';
$headers[] = 'X-Restli-Protocol-Version: 2.0.0';
$headers[] = 'Content-Type: multipart/form-data';
$ch = curl_init();
$options = array(
    CURLOPT_HEADER => true,
    CURLOPT_CUSTOMREQUEST => 'PUT',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_URL => 'https://api.linkedin.com/mediaUpload/C5522AQGTYER3k3ByHQ/feedshare-uploadedImage/0?ca=vector_feedshare&cn=uploads&m=AQJbrN86Zm265gAAAWemyz2pxPSgONtBiZdchrgG872QltnfYjnMdb2j3A&app=1953784&sync=0&v=beta&ut=2H-IhpbfXrRow1',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => array("upload-file" => '/Users/peter/Desktop/superneatimage.png')
    // CURLOPT_POSTFIELDS => array("upload-file" => new CURLFile('/Users/peter/Desktop/superneatimage.png'))
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
print_r($response);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

回应为:

HTTP / 1.1 400错误的请求服务器:播放Set-Cookie:lang = v = 2&lang = zh-CN; 路径= /; Domain = api.linkedin.com日期:2019年4月10日星期三09:16:25 GMT内容长度:0 X-Li-Fabric:prod-lsg1连接:keep-alive

链接到Linkedin文档

SO的类似问题,未能解决我的问题。

奥古斯丁·杰宁

使用Guzzle HTTP客户端而不是curl。我尝试了curl但它不起作用。

首先使用以下命令在当前目录中安装作曲家:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

作曲家更新后,运行以下命令以安装Guzzle(默认版本为3.9,需要php> = 5.3.3。您可以根据您的php版本进行指定):

php composer.phar需要guzzlehttp / guzzle

Guzzle客户端安装成功后,请使用以下代码上传文件

    require 'vendor/autoload.php';
    $client =new \GuzzleHttp\Client();
    $image_path='/path_to_your_image/my_image.png';
    $result=$client->request('PUT',$target_url, [
             'headers' => [
                 'Authorization' => 'Bearer ' . $token
              ],
              'body' => fopen($image_path, 'r'),
    
        ]);

您将获得以下成功的全面回应

HTTP / 2 201

日期:UTC 2019年4月10日星期三09:14:44服务器:播放set-cookie:lang = v = 2&lang = zh-cn; 路径= /; Domain = api.linkedin.com x-ambry-creation-time:Wed Apr 10 09:14:44 UTC 2019 access-control-allow-origin:https ://www.linkedin.com content-length:0

Guzzle是一个PHP HTTP客户端,可以轻松发送HTTP请求并轻松与Web服务集成。

  • 简单的界面,用于构建查询字符串,POST请求,流式传输大型上传文件,流式传输大型下载文件,使用HTTP cookie,上传JSON数据等。
  • 可以使用同一接口发送同步和异步请求。使用PSR-7接口处理请求,响应和流。这使您可以在Guzzle中使用其他与PSR-7兼容的库。
  • 提取基本的HTTP传输,使您可以编写环境并传输不可知的代码;即,对cURL,PHP流,套接字或非阻塞事件循环没有硬性依赖。
  • 中间件系统使您能够增强和构成客户端行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章