【问题标题】:How to share on LinkedIn using REST-API v2?如何使用 REST-API v2 在 LinkedIn 上分享?
【发布时间】:2019-04-02 12:24:04
【问题描述】:

我很难在linkedin 上分享。我正在尝试通过linkedin api v2发布LinkedIn共享,每次我发出发布请求时,我都会收到来自服务器的请求超时(状态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 api linkedin php-curl


    【解决方案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. 正确的 API 调用 URL 是 - https://api.linkedin.com/v2/ugcPosts(您不必在 URL 中包含 ?oauth2_access_token=

    2. 由于某种原因,您定义的 headers 数组的格式引发了错误。所以我修改了它。

    3. Person URN ID 必须替换为用户的 URN ID,该 ID 必须由另一个 API 调用生成 - 请参阅URN ID API 了解有关如何实现此目的的更多详细信息.

    【讨论】:

    • 谢谢。但是当我使用修改后的代码运行时,我收到了以下错误消息。 {"serviceErrorCode":65604,"message":"Empty oauth2 access token","status":401}
    • @Divyashree,嗯...我没有收到任何错误。您能否更新您现在正在使用的整个代码。
    • @Divyashree ...很高兴知道您解决了它。但是当我使用该 URL 时出现“提供了多个访问令牌”错误,这就是我更改它的原因。
    【解决方案2】:

    问题已解决

    在 URL 和标头中添加了 access_token。 现在代码正在运行。除此之外一切都保持不变。

    $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": "Empty oauth2 access token", "status": 401 }
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多