0

こちらのドキュメントで説明されている直接アップロード方法を使用して、YouTube にビデオをアップロードしようとしています。

開発者キーを正しく含め、問題なくセッション トークンも取得しています。トークンを使用してアップロード ページに移動すると、問題が発生します。アップロードして動画 ID を返す代わりに、1 行で表示されます。

ファイルの終わりが早すぎます。

私は zend を初めて使用するだけでなく、初めて youtube api を使用しました。認証といくつかのエラーが表示されましたが、この問題の理由や場所がわかりません。

これが私のphpファイルです。

<?php

session_start();

require_once 'Zend/Loader.php'; // the Zend dir must be in your include_path
Zend_Loader::loadClass('Zend_Gdata_YouTube');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Uri_Http');


function getAuthSubRequestUrl()
{
    $next = 'http://localhost/trial/trial.php';
    $scope = 'http://gdata.youtube.com';
    $secure = false;
    $session = true;
    return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session);
}

//generate link if no session or token has been requested
if (!isset($_SESSION['sessionToken']) && !isset($_GET['token'])){

  echo '<a href="' . getAuthSubRequestUrl() . '">Login to YouTube API!</a>';

  //if token has been requested but not saved to a session then save the new token to a session 
} else if (!isset($_SESSION['sessionToken']) && isset($_GET['token'])) {

  $_SESSION['sessionToken'] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);

}


if(isset($_SESSION['sessionToken'])) {

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

    $sessionToken = $_SESSION['sessionToken'];
    $developerKey = 'my-key-here';   //I have inserted the key correctly.

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

   // create a new Zend_Gdata_App_MediaFileSource object
   $filesource = $yt->newMediaFileSource('file.mov');
   $filesource->setContentType('video/quicktime');
   // set slug header
   $filesource->setSlug('file.mov');
   $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();

    }
}
?>

ありがとう。必要に応じて、問題またはコードに関する詳細な説明または情報を求めてください。

4

1 に答える 1

1

代わりに Data API を使用し、再開可能なアップロードを利用することをお勧めします。PHP アップロードの例を次に示します。

于 2013-08-29T18:32:52.777 に答える