2011-08-26 57 views
0

我試圖使用圖形API上傳視頻。 (我不使用傳統的REST API,因爲Facebook不鼓勵這樣做)。使用cURL和PHP使用圖形API上傳視頻

基本上我遵循基本的視頻上傳示例Yunnan Wu Platform Updates: Operation Developer Love,它使用HTML表單上傳文件。 相反,我想在沒有用戶交互的情況下自動完成,並嘗試使用cURL。我的代碼段看起來像下面(我發現在這裏的其他帖子)

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

$ch = curl_init(); 
$data[basename($file)] = '@' . realpath("klfaceevo.mp4"); 
curl_setopt($ch, CURLOPT_URL, $post_url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$res = curl_exec($ch); 

我收到以下內容。

方法未實現

在請求

無效的方法

我怎樣才能解決這個問題?

回答

0

您應該能夠將所有參數放入$ data數組中,然後剪掉查詢字符串參數。

$video_title = "test title"; 
$video_desc = "test desc"; 
$access_token = YOUR_ACCESS_TOKEN; 

$data = array('name' => 'file', 'file' => '@'.realpath("movie.m4v"), 'access_token' => $access_token, '_title' => $video_title, 'description' => $video_desc); 
$post_url = "https://graph-video.facebook.com/me/videos"; 
1

使用Facebook PHP SDK,它會做大部分的工作適合你。這是我如何自動視頻發佈到一個頁面。用正確的權限

這一步

  • 可以訪問令牌只在第一時間完成,以獲得有效的訪問令牌。如果您指定offline_access權限(如示例中所示),則此標記不會過期(除非用戶更改了我認爲的密碼)。 Facebook的文檔稱它爲「長壽命」。因此,存儲令牌並允許您的應用程序隨時發佈視頻(以及其他內容),而無需用戶進行交互。

    // Set up params 
        $params = array('canvas' => 1, 
           'fbconnect' => 0, 
           'scope' => "video_upload,publish_stream,manage_pages,offline_access"); 
    
        // Get login URL 
        $loginUrl = $facebook->getLoginUrl($params); 
    
        // Redirect user to the login URL 
        header("Location:{$loginUrl}"); 
    
  • 創建了Facebook對象的新實例,並調用它的API()方法

    $facebook = new Facebook(array('appId' => $app_id, 
                'secret' => $app_secret, 
                'cookie' => TRUE, 
               )); 
    
    
        try { 
         $video = $facebook->api('/<page id>/videos', 'POST', 
              array('access_token' => $access_token, 
                'source' => '@' . $file, 
                'description' => $video_desc, 
               )); 
    
          }catch (FacebookApiException $e) { 
          error_log($e); 
         } 
    
  • 的一些注意事項

    • 影片不得是大於1 GB。
    • CURLOPT_TIMEOUT默認設置爲60(秒)。如果您超時,請增加此值。你可以在base_facebook.php中找到這個設置。
    • 如果你想處理特殊的字符,一定要使用utf-8編碼和htmlspecialchars()。 (如果你對文本進行硬編碼,不要忘記像我一樣將編輯器設置爲utf-8編碼)。
    • 您的視頻在Facebook上顯示可能需要幾分鐘時間。
+0

嗨,我如何連接到Facebook,如果即時在商業頁面上?我沒有應用程序,我無法獲得api密鑰和密鑰。我需要獲取我在facebook上上傳的所有視頻。我知道這可以通過FQL查詢完成。我有Facebook PHP SDK。有沒有其他方法可以在不使用api密鑰和密鑰的情況下獲取我的所有視頻?或者,有沒有一種方法可以獲得api密鑰和密鑰? – user1149244