我需要将照片或视频发布到经过认证的Instagram企业帐户。
我已经获得了Instagram商业帐户的访问令牌,现在我希望上传视频到该帐户,但我一直收到此错误消息
介质ID不可用
我按照说明从这里的文档https://developers.facebook.com/docs/instagram-api/guides/content-publishing/上传视频或照片
请注意,下面的代码在上传照片时运行良好,但在上传视频时总是失败。
下面是我的代码,在遵循他们的文档之后:
let mediaContainerUrl = `https://graph.facebook.com/${igUserId}/media`;
let containerParams = new URLSearchParams();
if (isPhoto) {
containerParams.append('image_url', mediaUrl);
} else {
containerParams.append('video_url', mediaUrl);
containerParams.append('media_type', 'VIDEO');
}
containerParams.append('caption', caption);
containerParams.append('access_token', accessToken);
try {
let mediaContainerResponse = await axios.post(mediaContainerUrl, containerParams);
let { id } = mediaContainerResponse.data;
// id above is supposed to be the creation_id needed for the next step below:
// I can confirm that the id for the created media container was actually returned.
// So, it's weird for me to keep getting the Media ID not available error message.
let mediaPublishResponse = await axios.post(`https://graph.facebook.com/${igUserId}/media_publish?creation_id=${id}&access_token=${access_token}`);
let mediaPublishResponseData = mediaPublishResponse.data;
let publishedMediaId = mediaPublishResponseData.id;
console.log(`File uploaded to Instagram!`);
} catch (e) {
console.log(`Instagram file upload failed miserably`);
console.log(e);
}
请注意,上面的mediaUrl
来自远程URL,例如https://somewhere.com/video.mp4
再一次,上传照片与上述代码是工作完美,但从来没有工作时,它的视频。我一直收到以下完整的错误消息:
OAuth“Facebook Platform”“invalid_request”“媒体ID不可用
经过仔细观察,我注意到确实为视频生成了creation_id
,所以坦率地说,我仍然收到上述错误消息很奇怪。
拜托,我能做错什么?
我非常感谢任何解决这个问题的建议。
2条答案
按热度按时间vd8tlhqk1#
所以,问题就在这里。当您将视频上传到/media端点时,视频需要一些时间来处理,并且在此期间视频将无法发布,因此/media_publish端点返回“Media Id not available”。解决方案是检查容器的发布状态:
GET: /{ig-container-id}?fields=status_code
。只有当status_code为“FINISHED”时,容器才可用于发布。查看下面的链接了解更多详情IG内容发布故障排除
qcbq4gxm2#
@aib是正确的。
在调用发布之前,需要检查媒体容器的状态。 meta的文档指出:
如果您能够为视频创建容器,但POST /{ig-user-id}/media_publish端点未返回已发布媒体ID,则可以通过查询GET /{ig-container-id}?fields=status_code端点。
容器准备发布需要一些时间,具体取决于您要上传的视频的大小。对于一个1 Mb的视频,我花了~10秒的时间才让媒体容器可用。我检查
GET /{ig-container-id}?fields=status_code
端点以返回FINISHED
,只有这样我才能最终使用具有creationId的media_publish端点。