【问题标题】:Sharing Video to TikTok on the Web always return Bad Request在网络上向 TikTok 分享视频总是返回错误请求
【发布时间】:2021-12-30 14:15:41
【问题描述】:

我按照https://developers.tiktok.com/doc/web-video-kit-with-web 此处的文档使用登录工具包登录,然后我成功获得了帐户的 access_token 和 open_id。

现在我按照文档中的说明从 ExpressJS 服务器上传了一个视频,如下所示:

const FormData = require('form-data');
const got = require('got');
const axios = require('axios');

//Video Upload Function
async function uploadVideoToTikTok(){
let tikTokAccessToken = //Retrieved from database;
let openId = //Retrieved from database;
let shareUrl = `https://open-api.tiktok.com/share/video/upload/?open_id=${openId}&access_token=${tikTokAccessToken}`;
                
let video = got.stream(mediaUrl); //Media Url is similar to https://firebasestorage.com/adadadadadadad.mp4
let tikTokShareform = new FormData();
tikTokShareform.append("video", video);
try {
     let { data } = await axios.post(shareUrl, tikTokShareform);
     console.log(`TikTok Upload Result=${JSON.stringify(data, null, 2)}`);
   } catch (e) {
    console.log(`TikTok Video Upload Error`);
    console.log(e);
   }
}

但我不断得到的回应是

'错误请求'

没有提供更多信息让我知道错误请求的原因。

我还注意到文档没有提供有关如何为视频提供描述或标题的任何信息。

任何关于我如何解决这个问题的想法都将不胜感激。

谢谢

【问题讨论】:

  • 你能在浏览器中检索请求吗?
  • 我建议在 Postman 中重现您的请求,这样更容易调试网络请求,并且可以排除代码中的错误。在 Postman 中,您可以使用表单数据主体进行 POST。如果你能正常工作,你可以在 Postman 中打开“代码”侧边栏,它会给你“NodeJS - axios”代码。
  • @ChrisHayes 感谢您的回复。我不断从 TikTok 收到的错误是 error_detail: 'The uploaded file is greater than 50MB in size.',,即使视频为 4.7MB

标签: javascript node.js express tiktok


【解决方案1】:

问题可能是由于您的 HTTP POST 请求中缺少 Content-Type 标头,您应该尝试以下操作:

let { data } = await axios.post(
  shareUrl,
  {
    headers: {
      "Content-Type": "multipart/form-data",
    },
  },
  tikTokShareform,
);

或者,甚至更好:

let { data } = await axios.post(
  shareUrl,
  {
    headers: tikTokShareform.getHeaders(),
  },
  tikTokShareform,
);

【讨论】:

  • 谢谢,您的第二个选项就是答案。
猜你喜欢
  • 1970-01-01
  • 2017-11-04
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多