2012-02-16 140 views

回答

2

我不推荐使用Zend与CI,由于它的规模和复杂性。我开发了专门用于CodeIgniter的库https://github.com/jimdoescode/CodeIgniter-YouTube-API-Library

该库提供了几种不同的上传到YouTube的选项。您可以直接上传,将存储在服务器上的视频上传到YouTube。还有一个选项可以使用表单将视频从客户端上传到YouTube。如果您有任何问题,请查看并通知我。

1

的文档都这样了,还有其他方法,对所覆盖的Zend的GData:Uploading Videos

+1

马尔蒂 - 好像演示介绍了如何上传到用户的YouTube帐户。我希望用户上传到我的YouTube帐户。 – StackOverflowNewbie 2012-02-16 08:00:53

+2

您可以使用[ClientLogin](http://code.google.com/intl/fi-FI/apis/youtube/2.0/developers_guide_php.html#ClientLogin_for_Installed_Applications)将您的登录详细信息嵌入到源代码中,以仅验证一个帐户。 – 2012-02-16 11:26:43

+0

@MarttiLaine,我认为你是对的。我认为这样的事情应该是可能的。 – Mischa 2012-02-16 11:53:01

3

试试这个其工作

class Addvideo extends Controller { 



    function Addvideo() 

    { 

     parent::Controller(); 


     $this->load->library("zend"); 
     $this->zend->load("Zend/Gdata/AuthSub"); 
     $this->zend->load("Zend/Gdata/ClientLogin"); 
     $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin'; 

     /************Authentication**************/ 

     $this->zend->load("Zend/Gdata/YouTube"); 
     $this->zend->load("Zend/Gdata/HttpClient"); 

     $this->zend->load("Zend/Gdata/App/MediaFileSource"); 
     $this->zend->load("Zend/Gdata/App/HttpException"); 
     $this->zend->load("Zend/Uri/Http"); 


     $youtube = new Zend_Gdata_YouTube(); 
     $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry(); 
     $Gdata_AuthSub=new Zend_Gdata_AuthSub(); 

     $this->load->helper("text"); 
    } 

     function index(){ 
      $data['result']='videos'; 
      $this->load->view('videos/newform', $data); 

     } 

    function indexed(){ 

     $title = 'GruppoDSE Video'; 
     $description = 'Description'; 

     $youtube = new Zend_Gdata_YouTube();  
     $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin'; 
     $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
       $username = $this->config->item('username'), 
       $password = $this->config->item('password'), 
       $service = 'youtube', 
       $client = null, 
       $source = 'Arts Connector', // a short string identifying your application 
       $loginToken = null, 
       $loginCaptcha = null, 
       $authenticationURL); 

     $developerKey = $this->config->item('developer_key'); 
     $applicationId = 'Arts Connector'; 
     $clientId = 'My video upload client - v1'; 
     $yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 

     // create a new VideoEntry object 
     $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry(); 

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

     // Set keywords. Please note that this must be a comma-separated string 
     // and that individual keywords cannot contain whitespace 
     $myVideoEntry->SetVideoTags('cars, funny'); 

     $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken'; 
     $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl); 
     $data['tokenValue'] = $tokenArray['token']; 
     $data['postUrl'] = $tokenArray['url']; 


      // place to redirect user after upload 
      $data['nextUrl'] = 'http://www.avantajsoftwares.com/gruppo/uploadVideo'; 
      $res="Il file video aggiungere con successo, il risultato atteso verrà visualizzato dopo alcune volte"; 
      $this->session->set_userdata('greenFlag',$res); 
      // build the form 

      $this->load->view('videos/form', $data); 

     } 

    function AddVideoAjax(){ 

      $title=$_POST['title']; 
      $description=$_POST['description']; 

     $youtube = new Zend_Gdata_YouTube();  
     $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin'; 
     $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
       $username = $this->config->item('username'), 
       $password = $this->config->item('password'), 
       $service = 'youtube', 
       $client = null, 
       $source = 'Arts Connector', // a short string identifying your application 
       $loginToken = null, 
       $loginCaptcha = null, 
       $authenticationURL); 

     $developerKey = $this->config->item('developer_key'); 
     $applicationId = 'Arts Connector'; 
     $clientId = 'My video upload client - v1'; 
     try { 
     $yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey); 

     // create a new VideoEntry object 
     $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry(); 

     $myVideoEntry->setVideoTitle($title); 
     $myVideoEntry->setVideoDescription($description); 
     // The category must be a valid YouTube category! 
     $myVideoEntry->setVideoCategory('Education'); 

     // Set keywords. Please note that this must be a comma-separated string 
     // and that individual keywords cannot contain whitespace 
     $myVideoEntry->SetVideoTags('Seminar, Events'); 

     $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken'; 
     $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl); 
     $tokenValue = $tokenArray['token']; 
     $postUrl = $tokenArray['url']; 


      // place to redirect user after upload 
      $nextUrl = 'http://www.avantajsoftwares.com/gruppo/Addvideo'; 
      $res="Il file video aggiungere con successo, il risultato atteso verrà visualizzato dopo alcune volte"; 
      $this->session->set_userdata('greenFlag',$res); 
      // build the form 

      echo $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl . 
        '" method="post" enctype="multipart/form-data" onsubmit="return valid()">'. 
        '<div style="float:left;"><input name="file" type="file" id="file"/></div><div class="preloader"></div>'. 
        '<input name="token" type="hidden" value="'. $tokenValue .'"/>'. 
        '<div style="clear:both"></div>'. 
        '<div class="login-footer" id="prog_bar style="cursor:pointer"><input value="Carica video" type="submit" id="validate" class="button" onclick="progress_bar()"/></div>'. 
        '</form>'; 



      } catch (Zend_Gdata_App_Exception $e) { 

       echo $return="<div class='login-footer' style='width:130px;'><a style='height:16px; padding-top:7px;' class='button' href=".site_url()."Addvideo>Riprova di nuovo</a></div>"; 
      } 
      // Assuming that $videoEntry is the object that was returned during the upload 
      //$state = $myVideoEntry->getVideoState(); 




     } 

    function getAuthSubRequestUrl() 
     { 
      $gdata_AuthSub = new Zend_Gdata_AuthSub(); 
      $next = 'http://www.avantajsoftwares.com/gruppo/videos'; 
      $scope = 'http://gdata.youtube.com'; 
      $secure = false; 
      $session = true; 
      return $data=$gdata_AuthSub->getAuthSubTokenUri($next, $scope, $secure, $session); 
     } 

    function getAuthSubHttpClient() 
     { 
      echo $_SESSION['sessionToken']; 

      if (!isset($_SESSION['sessionToken']) && !isset($_GET['token'])){ 
       echo '<a href="' . $this->getAuthSubRequestUrl() . '">Login!</a>'; 
       return; 
      } else if (!isset($_SESSION['sessionToken']) && isset($_GET['token'])) { 
       $_SESSION['sessionToken'] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']); 
      } 

      $httpClient = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']); 
      return $httpClient; 
     } 


    /*************************** Class end ***********************************/ 
}