2012-10-31 64 views
0

我想直接上傳的視頻從服務器使用youtube API for youtube API。上傳的代碼位於控制器中,如下所示: function uploadVideo(){ require_once'Zend/Loader.php';如何使用youtube api直接上傳後重定向

Zend_Loader::loadClass('Zend_Gdata_YouTube'); 
    $yt = new Zend_Gdata_YouTube(); 
    Zend_Loader::loadClass('Zend_Gdata_AuthSub'); 
    Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
    //client login 
    $authenticationURL = 'https://www.google.com/accounts/ClientLogin'; 
    $httpClient = Zend_Gdata_ClientLogin::getHttpClient($username = '[email protected]', $password = 'password', $service = 'youtube', $client = null, $source = 'videotest',$loginToken = null, $loginCaptcha = null, $authenticationURL); 
    $developerKey = 'my-key'; 
    $yt = new Zend_Gdata_YouTube($httpClient, "videotest",null,$developerKey); 

    $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry(); 

    // create a new Zend_Gdata_App_MediaFileSource object 
    $path = Configure::read('Files.write'); 
    $video = $path . DS . 'videos' . DS .'car.mp4'; 
    $filesource = $yt -> newMediaFileSource($video); 
    $filesource -> setContentType('video/mp4'); 

    $filesource -> setSlug($video); 

    // add the filesource to the video entry 
    $myVideoEntry -> setMediaSource($filesource); 

    $myVideoEntry -> setVideoTitle('car'); 
    $myVideoEntry -> setVideoDescription('car video'); 
    // The category must be a valid YouTube category! 
    $myVideoEntry -> setVideoCategory('Autos'); 


    $myVideoEntry -> SetVideoTags('cars, test'); 

    $myVideoEntry -> setVideoDeveloperTags(array('mydevtag', 'anotherdevtag')); 

    $myVideoEntry->setVideoPrivate(); 

    // upload URI for the currently authenticated user 
    $uploadUrl = "http://uploads.gdata.youtube.com/feeds/api/users/default/uploads"; 


    try { 
     $newEntry = $yt -> insertEntry($myVideoEntry, $uploadUrl, 'Zend_Gdata_YouTube_VideoEntry'); 
echo "returned from youtube"; 
$this -> redirect('/videos/view'); 

    } catch (Zend_Gdata_App_HttpException $httpException) { 
     //print_r($httpException); 
     echo $httpException -> getRawResponseBody(); 
    } catch (Zend_Gdata_App_Exception $e) { 
     print_r($e); 
     echo $e -> getMessage(); 
    } 

} 

的視頻被上傳到我的YouTube頻道,但上傳後,我只看到一個空白的屏幕和它不重定向。事實上它insertentry後不執行任何聲明。這裏有什麼遺漏嗎?

+0

表單中的$ nextUrl後面缺少一個空格,就在method =「post」之前 – janenz00

+0

好吧,我現在編輯它爲$ form =「

「; ..但仍然是空白頁並且沒有重定向 – flowerpot

回答

0

我鑽研了這個問題,發現問題出在zend/gdata/app.php的插入方法中。出於某種原因,

$returnEntry = new $className($response->getBody()); 

失敗,即使$response->getBody()非空。所以現在,我在post()之後註釋掉了代碼,並且從這個方法返回null。它工作正常,控制回到我的應用程序。我不確定這是一個錯誤還是錯過了某些東西。如果有人能指出發生了什麼錯誤,那將會很棒。謝謝。

0

如果您想通過HTML表單提交視頻,並在完成後自動重定向到另一個頁面,則應該使用browser-based upload flow

如果你堅持使用直接上傳流程,那麼我不確定你的問題的答案是什麼,因爲它不直接與YouTube API相關。它只是歸結爲「如何在進行任意PHP調用後重定向到新的網頁」。

+0

我在我的cakephp控制器裏面直接上傳。一旦我上傳成功,我只是看到一個空白屏幕(即) \t \t \t $ this - > redirect('/ videos/view');不重定向。 – flowerpot

+0

$ yt-> insertEntry,不返回。但視頻上傳,並沒有引發異常..我一直在很難調試這個。請幫忙! – flowerpot

+0

我不知道CakePHP是什麼,或者爲什麼會阻止您執行基於瀏覽器的上載而不是直接上載。 –

相關問題