我正在尝试使用youtube api for PHP直接将视频从服务器上传到youtube。上传代码位于控制器中,如下所示 function uploadVideo(){ require_once'Zend / Loader.php';
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 = 'myusername@gmail.com', $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 :(得分:0)
如果您想通过HTML表单提交视频,那么您应该使用browser-based upload flow,然后在完成后自动重定向到其他页面。
如果您坚持使用直接上传流程,那么我不确定您问题的答案是什么,因为它不是与YouTube API直接相关的内容。它只是归结为“在进行任意PHP调用后如何重定向到新的网页”。
答案 1 :(得分:0)
我深入研究了这个问题,发现问题出在zend / gdata / app.php中的insertentry方法中。出于某种原因
$returnEntry = new $className($response->getBody());
失败,即使$response->getBody()
非空。所以现在,我在post()之后注释掉了代码,并从这个方法返回null。它工作正常,控制回到我的应用程序。我不确定这是一个错误还是错过了某些东西。如果有人能够指出出错的地方,那就太好了。感谢。