Facebook graph api 如何使用javascript通过FB api将视频上传到facebook?

Facebook graph api 如何使用javascript通过FB api将视频上传到facebook?,facebook-graph-api,Facebook Graph Api,如何使用FB api将视频文件上传到facebook?我环顾了stackoverflow,但我只能在视频/图片已经在线的地方找到答案,但我想让用户通过我的应用程序直接上传一个文件到facebook 一个可以上传到facebook的解决方案是,但它假设我在网上的某个地方有这张照片 这可能吗?如果是,那么怎么做?这是我使用javascript从客户端上传视频的代码。我使用axios进行http请求,但您可以使用自己的 这是一个重复的问题。 function uploadVideo(adaccoun

如何使用FB api将视频文件上传到facebook?我环顾了stackoverflow,但我只能在视频/图片已经在线的地方找到答案,但我想让用户通过我的应用程序直接上传一个文件到facebook

一个可以上传到facebook的解决方案是,但它假设我在网上的某个地方有这张照片


这可能吗?如果是,那么怎么做?

这是我使用javascript从客户端上传视频的代码。我使用axios进行http请求,但您可以使用自己的



这是一个重复的问题。
function uploadVideo(adaccount, access_token, file) {
  return axios({
    method: 'POST',
    url: `${adaccount}/advideos`,
    params: {
      access_token,
      upload_phase: 'start',
      file_size: file.size
    }
  })
    .then(res => {
      return new Promise(resolve => {
        resolve(transferVideo(
          adaccount,
          access_token,
          res.data.upload_session_id,
          res.data.start_offset,
          res.data.end_offset,
          file,
          1
        ))
      })
    })
    .catch(err => {
      // Note: you can handle your error here
      console.log(err)
    })
}

function transferVideo(adaccount, token, sessionId, start, end, file, number) {
  if (start === end) {
    return new Promise(resolve => {
      resolve(postVideo(adaccount, token, sessionId, file.name))
    })
  }
  const blob = new Blob([file], {
    type: file.type
  })
  const chunk = blob.slice(start, end, file.type)
  const formData = new FormData()
  formData.append(
    'video_file_chunk',
    chunk,
    `@chunk${number}.${file.type.split('/')[1]}`
  )
  return new Promise(resolve => {
    resolve(uploadVideoChunk(
      adaccount,
      token,
      start,
      sessionId,
      formData
    ))
  })
    .then(res => {
      return new Promise(resolve => {
        resolve(transferVideo(
          adaccount,
          token,
          sessionId,
          res.start_offset,
          res.end_offset,
          file,
          number++
        ))
      })
    })
    .catch(err => {
      throw new Error(JSON.stringify(err))
    })
}

function uploadVideoChunk(adaccount, access_token, start_offset, upload_session_id, formData) {
  return axios.post(`${adaccount}/advideos`, formData, {
    headers: {
      'content-type': 'multipart/form-data'
    },
    params: {
      access_token,
      upload_phase: 'transfer',
      start_offset,
      upload_session_id
    }
  })
    .then(res => res.data)
    .catch(err => {
      throw new Error(JSON.stringify(err))
    })
}

function postVideo(adaccount, access_token, upload_session_id, title) {
  return axios({
    method: 'POST',
    url: `${adaccount}/advideos`,
    params: {
      access_token,
      upload_phase: 'finish',
      upload_session_id,
      title
    }
  })
    .then(res => res.data)
    .catch(err => {
      throw new Error(JSON.stringify(err))
    })
}