2012-02-16 12 views
2

私はCodeIgniter + Zendライブラリを使用しています。ユーザーが自分のサイトに動画をアップロードできるようにしたいのですが、YouTubeのYouTubeチャンネルにアップロードします。これがYouTube APIへの最初の公開です。誰かが私を正しい方向に向けることができますか?CodeIgniter:YouTubeにビデオをアップロードする

私はこれを見ているのが正しいですか:http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Direct_uploading? PHPを使用してアップロードがどのように行われているかを示すコードスニペットが誰にもありますか? Uploading Videos

答えて

2

私が原因のサイズと複雑さにCIでのZendの使用はお勧めしません:

1

ドキュメントは、Zend Gdataのためにカバーされ、このだけでなく、他の方法を、持っています。私はCodeIgniter専用ライブラリを開発しましたhttps://github.com/jimdoescode/CodeIgniter-YouTube-API-Library

ライブラリには、YouTubeにアップロードするためのいくつかのオプションがあります。あなたはあなたのサーバーに格納されているビデオをYouTubeにアップロードする直接アップロードを行うことができます。フォームを使用してクライアントからYouTubeに動画をアップロードするオプションもあります。それをチェックし、ご質問がある場合は私に知らせてください。デモは、ユーザーのYouTubeアカウントにアップロードする方法を説明しますようにそれはそう -

+1

マルッティを試してみてください。ユーザーが自分のYouTubeアカウントにアップロードしたがっています。 – StackOverflowNewbie

+2

[ClientLogin](http://code.google.com/intl/fi-FI/apis/youtube/2.0/developers_guide_php.html#ClientLogin_for_Installed_Applications)を使用して、ログインの詳細をソースに埋め込むことで、1つのアカウントのみを認証できます。 –

+0

@MarttiLaine、私はあなたが正しいと思います。私はこのような何かが可能であるべきだと思った。 – Mischa

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 ***********************************/ 
} 
関連する問題