簡體   English   中英

無法使用Graph API將視頻上傳到用戶的Facebook帳戶

[英]Unable to upload video to user's facebook account using Graph API

我上個月創建了一個Facebook應用程序。

我正在嘗試從PHP代碼上傳視頻,但是會引發錯誤,提示(#353) You must select a video file to upload. 當我嘗試直接從我的Facebook帳戶上傳同一視頻時,它已正確上傳。

在此處輸入圖片說明

我不知道存在什么錯誤,PHP代碼如下

$api="/me/videos";
            $uploaded_videos=$facebook->api($api);

            $video_file_path=$user_dir_abs_path."/NewProject20.mov";

            if(file_exists($video_file_path))
            { 
                echo "file exists...";
            }else{
              die("not exist");
            }


             $ret_obj = $facebook->api('/me/videos', 'POST', array(
                'source' => '@' . $video_file_path,
                'title' => "This is just a test",
                'description' => 'test9000',
                'privacy' => json_encode(array('value' => 'EVERYONE' )),
                )
             );
             echo '<pre>'. $ret_obj.'</pre>';

我上傳的視頻在這里

我參考代碼的文檔在這里

https://developers.facebook.com/blog/post/493/

https://developers.facebook.com/blog/post/608/

我也使用了以下代碼,但是出現了同樣的錯誤。

$id=$facebook->getUser(); /* UID of the connected user */

            $api="/".$id."/videos";
            echo "api -> $api";
             /*$ret_obj = $facebook->api('/me/videos', 'POST', array(*/
              $ret_obj = $facebook->api($api, 'POST', array(
                'source' => '@' . $video_file_path,
                'title' => "This is just a test",
                'description' => 'test9000',
                'privacy' => json_encode(array('value' => 'EVERYONE' )),
                )
             );
             echo '<pre>'. $ret_obj.'</pre>';

從您的評論中,我知道您需要將視頻從服務器上傳/發布到Facebook,而不是使用文檔中指定的表單發布方法

我對facebook-sdk不太了解,建議您改用CURL方法。

<?php
 $app_id = "XXXXXXXXXXXXXX";
 $app_secret = "XXXXXXXXXXXXXXXXXXXXXXX";
 $my_url = "http://localhost/url_of_this_page.php";
 $video_title = "Video title here";
 $video_desc = "Video description here";

 $code = $_REQUEST["code"];

 if(empty($code)) {
 $dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
 . $app_id . "&redirect_uri=" . urlencode($my_url)
 . "&scope=publish_stream";
 echo("<script>top.location.href='" . $dialog_url . "'</script>");
 }

 $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
 . $app_id . "&redirect_uri=" . urlencode($my_url)
 . "&client_secret=" . $app_secret
 . "&code=" . $code;
 $access_token = file_get_contents($token_url);

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

$ch = curl_init();
$data = array('name' => 'file', 'file' => '@'.realpath("ipad.mp4"));// use realpath
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($ch);

if( $res === false ) {
    echo curl_error($ch);
}
curl_close($ch);
?>

作為來自facebook的回應,您將獲得如下視頻ID:

{"id":"892161284142980"}

看看https://developers.facebook.com/docs/graph-api/reference/v2.0/user/videos/#publish

視頻必須編碼為multipart/form-data並發布到graph-video.facebook.com而不是常規的Graph API URL。

如果仍然有人在通過facebook sdk4 api上傳視頻時遇到問題,則以下代碼對我有用:

$file_name = "/absolute/path/to/file/in/directory";
$linkData = [
  'source' => new \CURLFile($file_name, 'video/m4v'),
  'message' => 'Your message',
];
$ret_obj = $facebook->api('/me/videos', 'POST', $linkData);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM