为什么我从文档上传媒体时收到 404 ("Resource media not found")?
Why am I getting 404 ("Resource media not found") on the media upload from the docs?
用于将富媒体上传到 LinkedIn (https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/rich-media-shares#upload-rich-media) 的文档说要使用表单数据制作 POST
到 https://api.linkedin.com/media/upload
。据我所知,我在我的节点服务器上使用 request-promise
正确地做到了这一点,但我仍然收到 404.
最初我的文件有问题,但现在我认为我正在正确创建缓冲区。即使我不是,那也阻止了我提出请求,现在我是,我认为这不会导致 404。
我也尝试过使用 1.0.0
和 2.0.0
版本的 X-Restli-Protocol-Version
(LinkedIn API 东西)。
// See LinkedIn docs on Rich Media shares https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/rich-media-shares
const stream = require('stream');
const rp = require('request-promise')
async function postRichMediaShare(accessToken) {
try {
const file = await rp({
method: 'get',
url: 'https://local-image-bucket.s3.amazonaws.com/Artboard+copy.png'
});
// Buffer magic
const buffer = new Buffer.from(file);
const bufferStream = new stream.PassThrough();
bufferStream.end( buffer );
bufferStream.pipe( process.stdout );
const options = {
method: 'post',
url: 'https://api.linkedin.com/v2/media/upload',
headers: { 'X-Restli-Protocol-Version': '2.0.0',
"Authorization": `Bearer ${accessToken}` },
formData: {
file: {
value: bufferStream,
options: {
filename: 'Artboard+copy.png',
contentType: 'image/png'
}
}
},
};
const response = await rp(options);
console.log("response", response);
return response;
} catch (error) {
throw new Error(error);
}
}
我从 LinkedIn 收到此错误消息,而不是文档中建议的响应:
error: "{"serviceErrorCode":0,"message":"Resource media does not exist","status":404}"
我是个白痴。 404 应该是预期的,因为我请求 https://api.linkedin.com/v2/media/upload
并且文档说 https://api.linkedin.com/media/upload
(没有 v2/
)。我相信所有其他电话都是版本化的。也许一个有能力的 LinkedIn 员工阅读这篇文章可以为 v2/
开辟一条路线,做同样的事情。
注意,上面的代码可能还有其他问题,我还在苦苦挣扎,但现在我正在处理这个关于 404 的问题范围之外的事情。
用于将富媒体上传到 LinkedIn (https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/rich-media-shares#upload-rich-media) 的文档说要使用表单数据制作 POST
到 https://api.linkedin.com/media/upload
。据我所知,我在我的节点服务器上使用 request-promise
正确地做到了这一点,但我仍然收到 404.
最初我的文件有问题,但现在我认为我正在正确创建缓冲区。即使我不是,那也阻止了我提出请求,现在我是,我认为这不会导致 404。
我也尝试过使用 1.0.0
和 2.0.0
版本的 X-Restli-Protocol-Version
(LinkedIn API 东西)。
// See LinkedIn docs on Rich Media shares https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/rich-media-shares
const stream = require('stream');
const rp = require('request-promise')
async function postRichMediaShare(accessToken) {
try {
const file = await rp({
method: 'get',
url: 'https://local-image-bucket.s3.amazonaws.com/Artboard+copy.png'
});
// Buffer magic
const buffer = new Buffer.from(file);
const bufferStream = new stream.PassThrough();
bufferStream.end( buffer );
bufferStream.pipe( process.stdout );
const options = {
method: 'post',
url: 'https://api.linkedin.com/v2/media/upload',
headers: { 'X-Restli-Protocol-Version': '2.0.0',
"Authorization": `Bearer ${accessToken}` },
formData: {
file: {
value: bufferStream,
options: {
filename: 'Artboard+copy.png',
contentType: 'image/png'
}
}
},
};
const response = await rp(options);
console.log("response", response);
return response;
} catch (error) {
throw new Error(error);
}
}
我从 LinkedIn 收到此错误消息,而不是文档中建议的响应:
error: "{"serviceErrorCode":0,"message":"Resource media does not exist","status":404}"
我是个白痴。 404 应该是预期的,因为我请求 https://api.linkedin.com/v2/media/upload
并且文档说 https://api.linkedin.com/media/upload
(没有 v2/
)。我相信所有其他电话都是版本化的。也许一个有能力的 LinkedIn 员工阅读这篇文章可以为 v2/
开辟一条路线,做同样的事情。
注意,上面的代码可能还有其他问题,我还在苦苦挣扎,但现在我正在处理这个关于 404 的问题范围之外的事情。