2013-08-05 7 views
2

Pour télécharger la vidéo sur Facebook en utilisant les lignes suivantes.php - Facebook Video Upload Curl

$video = "http://xxx.com/video.mp4"; 
$data = array('name' => 'file', 'file' => $video, 
    'access_token' => $access_token, '_title' => $video_title, 
    'description' => $video_desc); 
$post_url = "https://graph-video.facebook.com/" . $page_id . "/videos"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $post_url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$res = curl_exec($ch); 

J'ai reçu une erreur:

"error":{"message":"(#353) You must select a video file to 
    upload.","type":"OAuthException","code":353}} 

Si je change curl pour former après cela fonctionne. Des idées sur pourquoi est-ce le cas?

+0

avez-vous venu avec une solution à terme? – geevee

+0

est-ce que facebook prend en charge le téléchargement de vidéo depuis une URL? – wuliwong

Répondre

0

Utilisez le chemin d'accès à la vidéo sur le serveur au lieu de l'URL. Alors:

$video = "uploads/video.mp4"; 

Puis:

$data = array('name' => 'file', 'file' => '@'.realpath($video), 
'access_token' => $access_token, '_title' => $video_title, 
'description' => $video_desc); 

Notez l'utilisation de realpath() après le symbole @. Je n'ai pas testé avec votre code mais j'ai une implémentation similaire et fonctionne très bien. Devrait faire l'affaire!

0

Pour FB SDK4: (voir le chemin vidéo codé en dur et le codage).

FB demande le fichier vidéo à transmettre encodé comme forme de données: https://developers.facebook.com/docs/graph-api/reference/user/videos/

private function postFBVideo($authResponse, $fileObj, $formData) 
    { 
     FacebookSession::setDefaultApplication('yourAppkey', 'yourAppSecret'); 
     $ajaxResponse = ''; 
     try { 
      $session = new FacebookSession($authResponse->accessToken); 
     } catch (FacebookRequestException $ex) { 
      // When Facebook returns an error 
      $ajaxResponse = 'FB Error ->' . json_encode($ex) ; 
     } catch (\Exception $ex) { 
      // When validation fails or other local issues 
      $ajaxResponse = 'FB Validation Error - ' . json_encode($ex) ; 
     } 
     if ($session) { 
      $response = (new FacebookRequest(
       $session, 'POST', '/me/videos', array(
        'source' => new CURLFile('videos/81JZrD_IMG_4349.MOV', 'video/MOV'), 
        'message' => $formDataMessage, 
       ) 
      ))->execute(); 
      $ajaxResponse = $response->getGraphObject(); 
     } 
     return json_encode($ajaxResponse); 
    }