Post in linkedin using API in php - Stack Overflow

admin2025-04-15  3

How can I post on LinkedIn with image in my profile? I have managed to upload a text post, but I need the solution for image post.

Here is the code snippet which I am using for text post,

$post_url = ";;
$post_headers = [
"Authorization: Bearer $access_token",
"Content-Type: application/json",
];

$post_data = [
"author" => "urn:li:person:$person_urn",
"lifecycleState" => "PUBLISHED",
"specificContent" => [
"com.linkedin.ugc.ShareContent" => [
    "shareCommentary" => [
        "text" => "My post content...",
    ],
    "shareMediaCategory" => "TEXT"
],
],
"visibility" => [
"com.linkedin.ugc.MemberNetworkVisibility" => "PUBLIC",
],
];

$post_response = publishPost($post_url, json_encode($post_data), 
$post_headers);

How can I post on LinkedIn with image in my profile? I have managed to upload a text post, but I need the solution for image post.

Here is the code snippet which I am using for text post,

$post_url = "https://api.linkedin.com/v2/ugcPosts";
$post_headers = [
"Authorization: Bearer $access_token",
"Content-Type: application/json",
];

$post_data = [
"author" => "urn:li:person:$person_urn",
"lifecycleState" => "PUBLISHED",
"specificContent" => [
"com.linkedin.ugc.ShareContent" => [
    "shareCommentary" => [
        "text" => "My post content...",
    ],
    "shareMediaCategory" => "TEXT"
],
],
"visibility" => [
"com.linkedin.ugc.MemberNetworkVisibility" => "PUBLIC",
],
];

$post_response = publishPost($post_url, json_encode($post_data), 
$post_headers);
Share Improve this question asked Feb 4 at 9:04 MSS LLPMSS LLP 234 bronze badges 0
Add a comment  | 

1 Answer 1

Reset to default 3

To post with an image you have to upload the image first and get the asset from LinkedIn. Call the below API for that,

$upload_url = "https://api.linkedin.com/v2/assets?action=registerUpload";
$upload_headers = [
"Authorization: Bearer $access_token",
"Content-Type: application/json",
];

$upload_data = [
"registerUploadRequest" => [
"owner" => "urn:li:person:$person_urn",
"recipes" => ["urn:li:digitalmediaRecipe:feedshare-image"],
"serviceRelationships" => [
    [
        "identifier" => "urn:li:userGeneratedContent",
        "relationshipType" => "OWNER",
    ],
],
"supportedUploadMechanism" => ["SYNCHRONOUS_UPLOAD"],
],
];

$upload_response = sendCurlRequest($upload_url, 
json_encode($upload_data), $upload_headers);
$upload_response = json_decode($upload_response, true);

if (empty($upload_response["value"]["uploadMechanism"]. 
["com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest"]. 
["uploadUrl"])) {
die("Failed to register upload.");
}

$image_upload_url = $upload_response["value"]["uploadMechanism"]. 
["com.linkedin.digitalmedia.uploading.MediaUploadHttpRequest"]. 
["uploadUrl"];
$asset = $upload_response["value"]["asset"]; // LinkedIn's asset URL

Upload the Image Binary:

$image_headers = [
"Authorization: Bearer $access_token",
"Content-Type: application/octet-stream",
];

$image_binary = file_get_contents('your_image.jpg'); // Read your image file
callCurlRequest($image_upload_url, $image_binary, $image_headers, true);

Now you can publish the Post with that Image, use the asset URL obtained earlier to attach the image to the post.

$post_url = "https://api.linkedin.com/v2/ugcPosts";
$post_headers = [
"Authorization: Bearer $access_token",
"Content-Type: application/json",
];

$post_data = [
"author" => "urn:li:person:$person_urn",
"lifecycleState" => "PUBLISHED",
"specificContent" => [
"com.linkedin.ugc.ShareContent" => [
    "shareCommentary" => [
        "text" => "Your post content with image...",
    ],
    "shareMediaCategory" => "IMAGE",
    "media" => [
        [
            "status" => "READY",
            "description" => [
                "text" => "Image description...",
            ],
            "media" => $asset,
            "title" => [
                "text" => "Shared via My App",
            ],
        ],
    ],
],
],
"visibility" => [
"com.linkedin.ugc.MemberNetworkVisibility" => "PUBLIC",
],
];

$post_response = sendCurlRequest($post_url, json_encode($post_data), 
$post_headers);
转载请注明原文地址:http://www.anycun.com/QandA/1744731715a86833.html