Всегда получать видео формат не поддерживается при публикации видео - PullRequest
0 голосов
/ 01 ноября 2011

Я пытаюсь использовать API графа для загрузки видео на стену пользователя. Результатом всегда является ответ об ошибке "{" error ": {" message ":" (# 352) Формат видеофайла не поддерживается "," type ":" OAuthException "}}". Я пробовал несколько разных типов видео, которые все поддерживаются на основе этого списка, http://developers.facebook.com/docs/reference/api/video/. Исходя из моего понимания найденной документации, все, что нужно сделать, это отправить запрос данных из нескольких частей на "https://graph -video.facebook.com / me / videos "через POST. Кстати, я смог опубликовать фотографию, используя аналогичные методы. Код, который я использую ниже. Он основан на примере PHP на http://developers.facebook.com/blog/post/493/. Я смог загрузить различные видео с помощью механизма загрузки на Facebook, поэтому я знаю, что видео подходит для Facebook. Токен доступа действителен, потому что я использовал его для публикации фотографии через API Graph.

Любые предложения о том, чего мне не хватает, приветствуются!

Вот код Java, который я использую:

File video = new File(pathtovideofile);
DataInputStream dis = new DataInputStream(new FileInputStream(video));
byte[] bytes = new byte[(int)video.length()];           
dis.read(bytes, 0, (int)video.length());

// set up the http client, the http method, and the multipart entity
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://graph-video.facebook.com/me/videos");
MultipartEntity mpEntity  = new MultipartEntity( );

ContentBody cbVideo     = new ByteArrayBody(bytes, "video/mp4", "Video Label");
ContentBody cbMessage     = new StringBody( "New Video" );
ContentBody cbTitle     = new StringBody( "Video Title" );
ContentBody cbAccessToken = new StringBody( accessTokenStr1 );

mpEntity.addPart( "access_token", cbAccessToken );
mpEntity.addPart( "file",         cbVideo        );
mpEntity.addPart( "description",  cbMessage     );
mpEntity.addPart( "title",        cbTitle     );

// put the multipart entity into the request
httppost.setEntity(mpEntity);
// send the request
HttpResponse response = httpclient.execute(httppost);

// get the response entity
HttpEntity resEntity = response.getEntity();
// read the stream and print out the results
InputStream instream = resEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
String line;
StringBuilder responsestr = new StringBuilder();
while (( line = reader.readLine()) != null) {               
  responsestr.append(line);
}
System.out.println(responsestr.toString());

1 Ответ

2 голосов
/ 13 декабря 2011

В PHP это работало для меня. Сначала загрузите файл на сервер, а затем попробуйте вызов API с помощью Graph API.

$fbvideo_upload=move_uploaded_file($_FILES['attach_video']['tmp_name'],$fbvideo_path);
chmod($fbvideo_path,0777);                  
if($fbvideo_upload)
{
    $args = array('message' => $status, "access_token" =>$accesstoken,"file" 
            => '@'.$fbvideo_path, "title"=>$video_title, "description"=>$video_desc);
    $post_url = "https://graph-video.facebook.com/me/videos?access_token=".$accesstoken;
    $ch = curl_init();                  
    curl_setopt($ch, CURLOPT_URL, $post_url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
    $data = curl_exec($ch);                     
    $data=json_decode($data,true);                      
    if(file_exists($fbvideo_path))
    {                           
        @unlink($fbvideo_path);                         
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...