使用图形api将视频上传到Facebook

时间:2013-07-22 09:51:11

标签: facebook facebook-graph-api facebook-php-sdk facebook-apps

我使用以下代码将视频上传到用户墙:

if( isset($_POST['submitVideo']) ) {
   $img =  $_FILES['source']['name'];     
   $ret_obj = $facebook->api('/me/videos', 'POST', array(
      'source' => '@' . $img,
      'title' => "This is just a test",
      'description' => 'test9000',
      'privacy' => json_encode(array( 'value' => 'EVERYONE' )),
      )
   );
   echo '<pre>Video ID: ' . $ret_obj['id'] . '</pre>';
}

表单如下所示:

<form target="uploadTarget" enctype="multipart/form-data" method="POST">
   <input name="source" type="file">
   <input type="submit" value="Upload" name="submitVideo" />
</form>

我的问题在于图像的来源。使用它是否正确:

$img =  $_FILES['source']['name'];

应该是什么来源?我从本地计算机上传文件。
编辑:
如果我对同一表单使用以下模式并使用此“$ post_url”作为操作,该怎么办?

$post_url = "https://graph-video.facebook.com/me/videos?"
        . "title=" . $video_title. "&description=" . $video_desc
        . "&access_token=". $access_token;

有效。但是转到这个“$ post_url”页面,它显示了上传文件的ID。如何将该ID用于我的数据库?

1 个答案:

答案 0 :(得分:0)

  

使用它是否正确:

$img =  $_FILES['source']['name'];

不,正如http://www.php.net/manual/en/features.file-upload.post-method.php告诉您的那样,这是“客户端计算机上文件的原始名称。” - 这当然不是您想要的。

您想要使用客户端上传到服务器后临时存储在服务器上的文件名:

  

$ _ FILES ['userfile'] ['tmp_name']

     

上传文件存储在服务器上的文件的临时文件名。


如果这不起作用(文件上传的临时目录可能无法直接访问cURL [PHP SDK内部使用]),则必须首先使用move_uploaded_file来存储文件您服务器上的另一个位置。