2010-11-23 3 views
9

自分のサイトに登録して、自分のYouTubeユーザーチャンネルに自分の動画をアップロードできるようにしたい。Zend Youtube API - 1つのアカウントで動画をアップロードしますか?

自分のログイン資格情報を必要とする動画やその他の動画をコメントにしたくありません。

私は以下を使用しますか?ClientLogin authorization?

もしそうなら、自分のサイトが自分のYouTubeチャンネルアカウントとやり取りできるようにトークンを取得するにはどうすればよいですか?

私はちょっとここで失われているので、ここのライトは大いに感謝します。

答えて

3

私はClientLoginを使用してこれを達成しました。基本クラスは以下の通りです。このクラスは、認証リクエストを行う準備ができているZend HTTP Clientのインスタンスを返します。

<?php 

class GoogleAuthenticator { 

    public static function authenticate($logger) { 
    $tokenObj = new Token(); 
    try { 
     $token = $tokenObj->get($token_name); 
     if(!empty($token)) { 
     //load a new HTTP client with our token 
     $logger->info('Using cached token: ' . $token); 
     $httpClient = new Zend_Gdata_HttpClient(); 
     $httpClient->setConfig(array(
       'maxredirects' => 0, 
       'strictredirects' => true, 
       'useragent' => 'uploader/v1' . ' Zend_Framework_Gdata/' . Zend_Version::VERSION 
      ) 
     ); 
     $httpClient->setClientLoginToken($token); 
     //attempt to use our token to make an authenticated request. If the token is invalid 
     // an exception will be raised and we can catch this below 
     $yt = new Zend_Gdata_YouTube($httpClient, 'uploader/v1', '', $youtube_api_key); 
     $query = new Zend_Gdata_YouTube_VideoQuery(); 
     $query->setFeedType('top rated'); 
     $query->setMaxResults(1); 
     $yt->getPlaylistListFeed(null, $query); //ignore the response! 
     } else {  
     $logger->info('Generating new HTTP client'); 
     // Need to create a brand new client+authentication 
     $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin'; 
     $httpClient = 
       Zend_Gdata_ClientLogin::getHttpClient(
         $username = YOUTUBE_USERNAME_PROD, 
         $password = YOUTUBE_PASSWORD_PROD, 
         $service = 'youtube', 
         $client = null, 
         $source = 'uploader/v1', 
         $loginToken = null, 
         $loginCaptcha = null, 
         $authenticationURL); 

     // get the token so we can cache it for later 
     $token = $httpClient->getClientLoginToken(); 
     $tokenObj->destroy($token_name); 
     $tokenObj->insert($token, $token_name); 
     } 
     return $httpClient; 

    }catch(Zend_Gdata_App_AuthException $e) { 
     $tokenObj->destroy($token_name); 
     die("Google Authentication error: " . $e->getMessage()); 
    }catch(Exception $e) { 
     $tokenObj->destroy($token_name); 
     die("General error: " . $e->getMessage()); 
    } 
    } // authenticate() 
} // GoogleAuthenticator 

?> 

あなたはこれらの定数が定義されている必要があります:あなたが道に必要なので、

YOUTUBE_USERNAME_PROD 
YOUTUBE_PASSWORD_PROD 

するか、それらを渡すためにクラスを変更トークンの有効期限が切れる可能性があるためのtry/catchが必要とされています。それらをリフレッシュする。また、作成後もトークンが有効であることを確認するために、ダミー要求を行う必要があります。

YouTubeは2年以上前から、10分以上の動画をアップロードすることができなかったことに注意してください。これにより、使用例がかなり難しくなります。つまり、1つのアカウントに複数の動画をアップロードすることはできません。これは10分ごとに行われます。しかしYouTubeはそれ以来これを解除しているかもしれません。幸運

+0

ありがとうございました!さて、11月は遠く離れていますが、この質問はもう一度起きるかもしれません - 私は答えを確認することはできませんが、私と他の人たちをどうにか助けてくれると確信しています。私はそれについて具体的な質問がありますが、残念ながら別の時間にそれらを残す必要があります。乾杯、もう一度、ありがとう。 – MEM

0

ドキュメントでAPI V3の完全な解決策が見つかりませんでしたので、私は解決策としてインターネットを検討してきました。最後に、私はPHPにPythonの例を移植し、同じ問題を抱えている他の人々のためにそれについてのブログ記事を書いた:あなたが持っていないので、このブログ投稿はのOAuth2でYouTube V3 APIを使用しています

Uploading a video to youtube through api version 3 in PHP

それが廃止されることを心配する。 V2のその他のすべての関数(ClientLogin、AuthSub、OAuth 1.0)はで、2012年4月20日の時点で廃止予定です。

+0

埋め込みリンクはもう良くありません。私はこのQ&Aを別の質問の「関連する」参考文献から、FYIとして見つけました。 –

+0

コメントのために@FunkFortyNinerに感謝します。私はリンクを解決しました。 – RJD22

関連する問題