【问题标题】:Request timed out [ LINKEDIN API ]请求超时 [LINKEDIN API]
【发布时间】:2019-09-27 07:35:35
【问题描述】:

我需要使用 LinkedIn API 来共享媒体。我目前是来获取令牌并获取个人资料数据的。所以问题是我无法在该网址“https://api.linkedin.com/v2/ugcPosts”中发布媒体。

How to share on LinkedIn using 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);

}

我收到以下错误消息:

{ "作者": "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":"Request timed out","status":504}

【问题讨论】:

  • 可能值得检查 var_dump($fields) 返回的内容。此外,您的 URL 看起来不正确(但不确定),直接在其末尾带有任何分隔符的访问令牌(除非 $this->_access_token 字符串中有一个?
  • 感谢您的快速响应,我将更新放在首位。我试着按照你说的做,但还有另一个错误:“请求超时”
  • 我尝试在邮递员中提出请求并且效果很好,所以我认为我在 curl 上犯了一个错误。如果你看到任何错误,你能告诉我。非常感谢

标签: php api linkedin


【解决方案1】:

我放了这个标题:

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

根据这篇文章 = How to post raw body data with 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);

    }

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 2017-02-13
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2017-03-22
    • 2022-01-13
    • 2010-11-29
    相关资源
    最近更新 更多