如何解决问:Linkedin Vector Assest API,注册分段上传 - 响应中没有元数据值
我正在尝试使用 Linkedin V2 Vector Assets 完成分段上传,我注意到在注册上传时,metadata
字段在响应中变回空白。
这是注册上传的请求 https://api.linkedin.com/v2/assets?action=registerUpload
{
"registerUploadRequest":{
"owner":"urn:li:organization:71736744","recipes":["urn:li:digitalmediaRecipe:feedshare-video"],"serviceRelationships":[
{"identifier":"urn:li:userGeneratedContent","relationshipType":"OWNER"}
],"supportedUploadMechanism":["MULTIPART_UPLOAD"],"fileSize":50866165
}
这是响应(删除了除一个 partUploadRequests 对象之外的所有对象以使响应更易于阅读)
{
"value": {
"uploadMechanism": {
"com.linkedin.digitalmedia.uploading.MultipartUpload": {
"partUploadRequests": [
{
"headers": {
"Content-Type": "application/octet-stream"
},"byteRange": { "lastByte": 4194303,"firstByte": 0 },"url": "https://www.linkedin.com/dms-uploads/C5605AQFnYcNsf7K5Yw/uploadedVideo?sau=aHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2FtYnJ5L2FtYnJ5LXZpZGVvLz94LWxpLWFtYnJ5LWVwPUFRRmp4SlBwRndkUUNnQUFBWGhjYkgwNzNuZmpacTRFM3AxUkpidTMxTlAxems3WmdoUHN1Ymp1TjVGTXVDRGFOaGczVnpHWXNpLW5OYWh2NlkxWkU5UDVIdktsQ2JxbGhhOUt1SElJSnBXTjI0TkEyWDIzM1ZiaS1aNW4yTmlXWWQyX1VlN1J2d0FEdkMwSG51ckNMY1ljMkdrczhKclFlZHRYNlZNN2dvTFJad2hpT0pxcFNZM29mXzdTTmRhZjZzQlNMS3FwaTJyWF9LYTRqTk9OcnBhTFpCam1KR3ZENEV3ZFd0VHEzNm44aEFQbDhCMmc3cVpOd3Q0Ny1TT1ZvcHRoT0dWcTB0cHAxU2VkbkY2aVNVQ3J6RVlwVHdzNDZTQlViME5HbGxITHo4a1ZNOGJxYkJjMDVCc054MDQ2ZDktZWdGb2RFa3ZKRmxsU0NRWFV2ZzdQb3VFaVNodkZtSHRYVHhLLWlkbnpKWjlQN1Q2b1ROQWJhWE5iR2g2QUdBQmQ3VVdjNkdGb01YaWFiazBhRlA4UzNpUXNlM05ISFNVdkFBdk1nSnV2a0xxWV9oYU1VTXdoeXFRT0w1a0NLM1NSd2RXTnpKSHZLMkhfY0ZqclYzcnB4VXJZckkxbUZ2QVl2Y3dUcVYyaDhWWHRpY1luNTA0am1jUjN3U0M5RVVQZEo2RFZEd1RJRmFvOTJYcmszbTFNS2pSRlFZMV94enVHZVk4SERKWTQwbDQySVRJNXlCLUp3b2V3Vjl3RGduOTZycmhoY1pLa0VOck5vdUZ4eDdodlBTNkZUVXcweXJWM3BaOUF5X2NtaHBXTVpwOVRFY0pJcGY3elFrQTF3ZFcyR3VIcEtGLUF4MldTZTdlR1pCOTdHaU5vLW9XamhkV2stR2MzNFh5UjFwckZsTF9sSFFUWU40S2pNLUI2Y2poZHFJV2xVTll6Z1lVaXdwNld2UEYwVFRObW5kQVgtTTBlX1VsaGFOQ190SDFEcG9Kem5IZExoN3IxMGk5VWE4MGpsZ3pDQzBsT3JKSkxuSEcwNm9jVzNJSzctT3NSZGhBSEFNdTBuWDNRdlhfSFoxWXpfNXgza3dyZzBPOVlmN2xIUFFiVW1lYllReUlJaGdxOEE1blpxVUxzeUpvZElLWk5WdUdlcjVuN21jTFV4TzRtNlBUczVtc3pHS0x4Z3o4b2FDdVNiWWliYzh2NkpxQktiN2RmejdnQWRFVVpfNnRLenVxUm11bGk5OGZVSVpOR3hfc3R1Mk9nVDYzYXRoQmZnRHQ0dGpnVi1BOWlaVXdtYWNLckxwVE5wNUdHZlBxZjhLaE1MZC1BVXotSVNoX19jRUlzM2laSXlpeC1pNlFpeGZyRmpxQnYwaDhwOGZpeXZ0Q2Job0xjU1g4aWNjX0lSX28xQXR0UmZB&pn=1&m=616825227&app=86804616&sync=0&v=beta&ut=1nBLJxAvwH5FI1","urlExpiresAt": 1616544717116
} ...
],"metadata": ""
}
},"asset": "urn:li:digitalmediaAsset:C5605AQFnYcNsf7K5Yw","mediaArtifact": "urn:li:digitalmediaMediaArtifact:(urn:li:digitalmediaAsset:C5605AQFnYcNsf7K5Yw,urn:li:digitalmediaMediaArtifactClass:uploadedVideo)"
}
}
api 文档说明我需要使用注册上传响应中的元数据值到 complete the upload
我尝试在没有元数据字段值为 https://api.linkedin.com/v2/assets?action=completeMultiPartUpload
的情况下发出请求(删除了除一个 partUploadResponses 对象之外的所有对象以使响应更易于阅读)
{
"completeMultipartUploadRequest": {
"mediaArtifact": "urn:li:digitalmediaMediaArtifact:(urn:li:digitalmediaAsset:C5605AQFnYcNsf7K5Yw,urn:li:digitalmediaMediaArtifactClass:uploadedVideo)","metadata": "","partUploadResponses": [
{
"headers": {
"ETag": "/ambry-video/signedId/AQGpSasdC3ezCgAAAXhcbTobXlB6_ujllr8BPUUAX4o9OgbHCxiRKoG9woM85dnGrxbUbd-5IXyMKO7syqyZXLgHFd8GQJkiMvvp1eHI9N32iJqMG-l_aFgSeXMbcqkFFcjuT22djM93dmKs_RBb58kppS3CadOPHSt5_tApCxAq0wgTfYQng3OkV_uVRdjIYftyfnHW3nF2vWz4hZBoX-YhmF6gDhXtN9dNTnU4QpHB7sGCecpjYgT8ypV-u5isvFrujHl3tl4.bin"
},"httpStatusCode": 200
} ....
]
}
}
返回 200OK,没有任何预期的响应主体。
之后,我检查了上传状态,返回的代码为 SERVER_ERROR
,但我无法使用上传资产的 asset id
创建帖子。
检查资产状态的响应 https://api.linkedin.com/v2/assets/C5605AQFnYcNsf7K5Yw
{
"recipes": [
{
"recipe": "urn:li:digitalmediaRecipe:feedshare-video","status": "SERVER_ERROR"
}
],"serviceRelationships": [
{
"relationshipType": "OWNER","identifier": "urn:li:userGeneratedContent"
}
],"mediaTypeFamily": "VIDEO","created": 1616458317042,"id": "C5605AQFnYcNsf7K5Yw","lastModified": 1616458454711,"status": "ALLOWED"
}
请求创建一个包含资产 https://api.linkedin.com/v2/assets
的 UGC 帖子
{
"author": "urn:li:organization:71736744","lifecycleState": "PUBLISHED","specificContent": {
"com.linkedin.ugc.ShareContent": {
"media": [
{
"media": "urn:li:digitalmediaAsset:C5605AQFnYcNsf7K5Yw","status": "READY","title": {
"attributes": [],"text": "Sample Video Create"
}
}
],"shareCommentary": {
"attributes": [],"text": "Some share text"
},"shareMediaCategory": "VIDEO"
}
},"visibility": {
"com.linkedin.ugc.MemberNetworkVisibility": "PUBLIC"
}
响应请求
{
"serviceErrorCode": 0,"message": "Resource assets does not exist","status": 404}
我唯一能想到的是,因为我在完成上传时没有元数据值,所以我无法在 UGC 帖子中使用视频资产。有没有人遇到过类似的问题?
进一步调查
在进一步调查中,API 文档中的示例也不返回 metadata
字段。所以这就是我认为可能发生的事情
- 我没有正确上传文件块,完成上传不需要
metadata
字段。 - API 中存在一个错误,导致它在注册分段上传时无法返回元数据字段。
解决方法
想通了,当使用 slice 方法将文件分成块时,它需要 file.slice(firstByte,lastByte + 1)
似乎也不需要注册上传请求中的元数据值来完成上传。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。