开发者

Youtube API PHP Zend GData Direct Upload

I'm creating a web application that uploads websites from my server to youtube on behalf of the users.

I have followed Google's documentation for PHP and been sucessful in obtaining a session token.

Here is my code I'm using to retrieve my session token:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

$singleUseToken = $_GET['token'];

$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken);  

echo $sessionToken;

My intent is to store that session token in a database for each user. A seperate script would retrieve that session token and before direct video uploads on behalf of the user.

This is where I get tripped up a bit. The current documentation for upload videos directly uses the following code:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

$yt = new Zend_Gdata_YouTube($httpClient);  

$myVideoEntry = 开发者_如何学运维new Zend_Gdata_YouTube_VideoEntry(); 

$filesource = $yt->newMediaFileSource('somefile.mp4'); 
$filesource->setContentType('video/mp4'); 
$filesource->setSlug('somefile.mp4');  
$myVideoEntry->setMediaSource($filesource);  
$myVideoEntry->setVideoTitle('My Test Movie'); 
$myVideoEntry->setVideoDescription('My Test Movie'); 

$myVideoEntry->setVideoCategory('Entertainment');  
$myVideoEntry->SetVideoTags('test');  
$myVideoEntry->setVideoDeveloperTags(array('test', 'tester'));  

$uploadUrl = 'http://uploads.gdata.youtube.com/feeds/api/users/default/uploads';  

$newEntry = $yt->insertEntry($myVideoEntry, $uploadUrl, 'Zend_Gdata_YouTube_VideoEntry');

I'm confused about how to properly formulate the $httpClient variable of the following part:

$yt = new Zend_Gdata_YouTube($httpClient);

I already have the session token stored in my database, and will need to skip authentication and just use my session token to perform a direct upload.

Any help is appreciated.

Thanks, Tegan Snyder


I was able to figure out the solution. In case anyone is interested here is my code.

<?php
$clientLibraryPath = '/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_YouTube'); 
Zend_Loader::loadClass('Zend_Uri_Http');

$sessionToken = '[whatever this is]';
$developerKey = '[whatever this is]';

$httpClient = new Zend_Gdata_HttpClient();
$httpClient->setAuthSubToken($sessionToken);

$yt = new Zend_Gdata_YouTube($httpClient, '23', '234', $developerKey);

$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();

$file= '../path_to_file/filename.mp4';
$file = realpath($file);  

$filesource = $yt->newMediaFileSource($file); 
$filesource->setContentType('video/mp4'); 
$filesource->setSlug($file);  
$myVideoEntry->setMediaSource($filesource);  
$myVideoEntry->setVideoTitle('My Test Movie'); 
$myVideoEntry->setVideoDescription('My Test Movie'); 

$myVideoEntry->setVideoCategory('Entertainment');  
$myVideoEntry->SetVideoTags('testme');  
$myVideoEntry->setVideoDeveloperTags(array('tester', 'test'));  

$uploadUrl = 'http://uploads.gdata.youtube.com/feeds/api/users/default/uploads';  


try {  

    $newEntry = $yt->insertEntry($myVideoEntry, $uploadUrl, 'Zend_Gdata_YouTube_VideoEntry'); 

} catch (Zend_Gdata_App_HttpException $httpException) {   

    echo $httpException->getRawResponseBody();

} catch (Zend_Gdata_App_Exception $e) {

    echo $e->getMessage();

}

?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜