2010-10-21 2 views
2

Я создаю веб-приложение, которое загружает веб-сайты с моего сервера на youtube от имени пользователей.Youtube API PHP Zend GData Direct Upload

Я следил за документацией Google для PHP и добился успеха в получении токена сеанса.

Вот мой код, я использую, чтобы получить свою сессионный токен:

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

$singleUseToken = $_GET['token']; 

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

echo $sessionToken; 

Моя цель заключается в хранении, что маркер сеанса в базе данных для каждого пользователя. Отдельный скрипт будет извлекать этот токен сеанса и до прямой загрузки видео от имени пользователя.

Здесь я немного сработал. Текущая документация для загрузки видео непосредственно использует следующий код:

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'); 

Я запутался о том, как правильно сформулировать HTTPClient переменной следующей части $:

$yt = new Zend_Gdata_YouTube($httpClient); 

У меня уже есть маркер сеанса хранится в моей базе данных, и вам нужно будет пропустить аутентификацию и просто использовать мой токен для выполнения прямой загрузки.

Любая помощь приветствуется.

Спасибо, Tegan Snyder

ответ

8

мне удалось выяснить решение. В случае, если кто-то заинтересован здесь, это мой код.

<?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

Я был в состоянии принять этот код и изменить его, чтобы использовать его в среде класса. Хороший код, хорошая работа. –

Смежные вопросы