node.js - 上传到 Instagram 企业帐户的视频总是返回 "Media ID is not available"错误消息

标签 node.js facebook facebook-graph-api instagram instagram-api

我需要将照片或视频发布到经过身份验证的 Instagram 企业帐户。

我已经获得了 Instagram 商业帐户的访问 token ,现在我想将视频上传到该帐户,但我一直收到此错误消息

Media ID is not available

我按照说明从此处的文档上传视频或照片 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" "Media ID is not available

经过仔细观察,我发现 creation_id 确实是为视频生成的,所以坦率地说,我仍然收到上述错误消息,这很奇怪。

拜托,我做错了什么?

我感谢解决此问题的任何建议。

最佳答案

所以,这就是问题所在。当您将视频上传到/media 端点时,视频需要一些时间来处理,并且在此期间视频将无法发布,因此/media_publish 端点返回“媒体 ID 不可用”的原因。解决方案是检查容器的发布状态:GET:/{ig-container-id}?fields=status_code。只有当 status_code 为“FINISHED”时,容器才可用于发布。查看下面的链接了解更多详情

IG content publish troubleshooting

关于node.js - 上传到 Instagram 企业帐户的视频总是返回 "Media ID is not available"错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69605251/

相关文章:

facebook - 如何使用 Graph API 以编程方式向页面添加事件?

facebook-graph-api - 来自 Passport Facebook 的质量更好的照片

javascript - 如何延迟fb api中的api调用

node.js - Docker 镜像构建但在浏览器中看不到

javascript - 异步函数的 Mocha 测试

facebook - 您可以收集用户在 Facebook 中点赞和/或评论过的帖子列表吗?

iPhone SDK/Facebook 连接 : Using a custom login dialog

javascript - 从路由器内关闭服务器

node.js - 模块 '"typeorm "' has no exported member ' DataSource' 和 'DataSourceOptions'

javascript - 在 sencha touch 2 中使用 oAuth 连接 facebook