Facebook graph api 如何使用javascript通过FB api将视频上传到facebook?
如何使用FB api将视频文件上传到facebook?我环顾了stackoverflow,但我只能在视频/图片已经在线的地方找到答案,但我想让用户通过我的应用程序直接上传一个文件到facebook 一个可以上传到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
这可能吗?如果是,那么怎么做?这是我使用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))
})
}