使用facebook-php-sdk-v4将视频重新上传到facebook
我正在使用以下SDK: 此外,我正在使用以下过程: 以下是迄今为止我掌握的相关代码的摘要:使用facebook-php-sdk-v4将视频重新上传到facebook,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我正在使用以下SDK: 此外,我正在使用以下过程: 以下是迄今为止我掌握的相关代码的摘要: $path = '/' . $fb->getUid() . '/videos'; $params = array('upload_phase' => 'start', 'file_size' => filesize($fileName)); $startResult = (new \Facebook\Fa
$path = '/' . $fb->getUid() . '/videos';
$params = array('upload_phase' => 'start', 'file_size' => filesize($fileName));
$startResult = (new \Facebook\FacebookRequest($this->fbSession, 'POST', $path, $params, 'v2.3'))->execute()->getGraphObject();
print_r($startResult);
$startOffset = $startResult->getProperty('start_offset');
$endOffset = $chunkSize = $startResult->getProperty('end_offset');
$uploadSessionId = $startResult->getProperty('upload_session_id');
chdir(sys_get_temp_dir());
$splitCmd = "split --bytes=$chunkSize --suffix-length=1 --numeric-suffixes $fileName {$prefix}";
exec($splitCmd);
$part = 0;
while(($startOffset < $endOffset) && ($part <= 10))
{
$curChunk = sys_get_temp_dir() . '/' . $prefix . $part;
$params = array('upload_phase' => 'transfer',
'start_offset' => $startOffset,
'upload_session_id' => $uploadSessionId,
'video_file_chunk' => '@' . $curChunk);
print_r($params);echo "\n";
$upldResult = (new \Facebook\FacebookRequest($this->fbSession, 'POST', $path, $params, 'v2.3'))->execute()->getGraphObject();
$startOffset = $upldResult->getProperty('start_offset');
$endOffset = $upldResult->getProperty('end_offset');
unlink($curChunk);
$part++;
echo "$startOffset > $endOffset\n";
}
echo "Done uploading\n";
$params = array('upload_session_id' => $uploadSessionId,
'upload_phase' => 'finish',
'title' => 'My Title',
'description' => 'My Description',
);
print_r($params); echo "\n";
$postResult = (new \Facebook\FacebookRequest($this->fbSession, 'POST', $path, $params, 'v2.3'))->execute()->getGraphObject();
print_r($postResult);
我想不出怎么解决这个问题。我给它刚刚还给我的会话id,用于可恢复上传,它告诉我它是无效的(我想)。还有其他人在使用可恢复上传吗?你是如何让它工作的
更新:我不再认为这与PHPSDK有关。我可以使用命令行curl和
UPDATE2:下面是使用curl和您自己的访问令牌和fb配置文件复制此错误的最基本方法:
curl -X POST "https://graph-video.facebook.com/v2.3/<your_fb_id>/videos" -F "access_token=<your_access_token>" -F "upload_phase=start" -F "file_size=3512954"
Response:{"video_id":"10205422595678264","start_offset":"0","end_offset":"1048576","upload_session_id":"10205422595718265"}
curl -X POST "https://graph-video.facebook.com/v2.3/<your_fb_id>/videos" -F "access_token=<your_access_token>" -F "upload_phase=transfer" -F "start_offset=0" -F "upload_session_id=10205422595718265" -F "video_file_chunk=@/tmp/CHUNK0.mp4"
Response: {"error":{"message":"(#1363041) Invalid upload session given.","type":"OAuthException","code":1363041}}
curl-X POST”https://graph-video.facebook.com/v2.3//videos“-F”访问令牌=“-F”上载阶段=开始“-F”文件大小=3512954”
响应:{“视频”id:“10205422595678264”,“开始偏移量:“0”,“结束偏移量:“1048576”,“上载会话”id:“10205422595718265”}
卷曲-X柱“https://graph-video.facebook.com/v2.3//videos“-F”访问令牌=“-F”上载阶段=传输“-F”开始偏移量=0“-F”上载会话id=10205422595718265“-F”视频文件块=@/tmp/CHUNK0.mp4”
响应:{“错误”:{“消息”:“(#1363041)给定的上载会话无效。”,“类型”:“OAutheException”,“代码”:1363041}
作为旁注,使用'video\u file\u chunk'=>@$文件名对我不起作用(发布的内容长度总是太小)。我的PHP版本是5.6,所以我尝试了哪个版本更好(发布的内容长度是正确的)。但这并没有修复我的错误消息。仍然得到无效的上传会话。你并不孤单,我在Facebook iOS框架上遇到了完全相同的问题。我与Facebook有一个共同点:我正在等待他们的回复。Facebook现在已经解决了这个问题。我现在证实它对我有效。
curl -X POST "https://graph-video.facebook.com/v2.3/<your_fb_id>/videos" -F "access_token=<your_access_token>" -F "upload_phase=start" -F "file_size=3512954"
Response:{"video_id":"10205422595678264","start_offset":"0","end_offset":"1048576","upload_session_id":"10205422595718265"}
curl -X POST "https://graph-video.facebook.com/v2.3/<your_fb_id>/videos" -F "access_token=<your_access_token>" -F "upload_phase=transfer" -F "start_offset=0" -F "upload_session_id=10205422595718265" -F "video_file_chunk=@/tmp/CHUNK0.mp4"
Response: {"error":{"message":"(#1363041) Invalid upload session given.","type":"OAuthException","code":1363041}}