【问题标题】:LinkedIn Videos Beta endpoints giving 500 errorsLinkedIn 视频 Beta 端点给出 500 个错误
【发布时间】:2021-12-17 12:00:04
【问题描述】:

我在领英视频测试版中,正在尝试通过 API 上传视频。 https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/videos-api-beta?tabs=http#upload-the-video

由于文件超过 4mb,我将根据要求将其拆分,并且据我所知,我的视频的所有部分都已成功上传。我还记录了每个部分的 etag,以便完成上传。

端点videos?action=finalizeUpload 将返回一个 504 和消息网关超时。我在内部使用的客户端使用 Guzzle,我试图增加超时,但我相信这不是问题。这样做的原因是,如果我使用 urlencoded 视频 URN 加载视频,我将收到带有内部服务器错误消息的 500 状态。

$userUrn = 'urn:li:person:[urn]';
// register the upload, returns the upload urls
$registerResult = $client->post(
    'videos?action=initializeUpload',
    [
        "initializeUploadRequest" => [
            'owner' => $userUrn,
            "purpose" => 'FEED_VIDEO',
            "fileSizeBytes" => filesize($videoFile),
            "uploadCaptions" => false,
            "uploadThumbnail" => false
        ]
    ]
);
$videoUrn = $registerResult['value']['video'];
$uploadToken = $registerResult['value']['uploadToken'];
// split the video file into parts
exec('split -b 4194303 "' . $videoFile . '"');
$file = 'xaa';
$etags = [];
foreach($registerResult['value']['uploadInstructions'] as $i => $uploadInstructions) 
{
    $filePath = __DIR__ . '/' . $file;
    // upload the part
    $shellCmd = 'curl -v -H "Content-Type:application/octet-stream" --upload-file "' . $filePath . '" "' . $uploadInstructions['uploadUrl'] . '" 2>&1';
    exec($shellCmd, $o);
    $matches = [];
    preg_match('/(etag:)(\s?)(.*)(\n)/', implode("\n", $o), $matches);
    $etags[] = $matches[3]
    $file++;
}
// in this prototype just remove all of these files
exec("rm xa*");

$videoStatus = $client->post(
    "videos?action=finalizeUpload",
    [
        "finalizeUploadRequest" => [
            "video" => $videoUrn,
            "uploadToken" => $uploadToken,
            "uploadedPartIds" => $etags
        ]
    ]
);

我还手动验证了在我的视频中使用 split 和 cat 确实会生成与原始视频完全相同的副本。 (虽然我不能确定 LinkedIn 在做什么)

第一个请求initializeUpload 将返回包含视频骨灰盒、上传令牌(通常是空的,但我一直在抓取它)和上传说明的数据。所以我知道客户工作。上传视频部分的 curl 命令也似乎可以工作。它返回 etag,我将其放入数组中以发送回。

正如标题所示,此功能目前是 Beta,但我没有被告知要在任何特定的地方提供有关 Beta 的反馈,并且 API 帮助确实表明要发布问题。

【问题讨论】:

    标签: php linkedin linkedin-api


    【解决方案1】:

    我看到 LinkedIn 文档引用了错误的 (EI) URL here。 你应该使用

    https://api.linkedin.com/v2/videos?action=finalizeUpload
    

    而不是

    https://api.linkedin-ei.com/v2/videos?action=finalizeUpload
    

    【讨论】:

    • 这是他们的错字,我从他们的支持台收到了确认。
    猜你喜欢
    • 2022-07-06
    • 2023-03-09
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多