Youtube视频上传API问题

时间:2012-10-08 09:51:31

标签: php api youtube feed

我似乎无法让这个API工作。我的眼睛错过了我正在犯的错误。我遇到的问题是该页面仍显示BLANK。

我需要表格将数据上传到Youtube,稍后会在我的网站上显示。

这是我的代码:

<?php
require_once 'library/Zend/Loader/AutoloaderFactory.php'; // the Zend dir must be in    your include_path
Zend_Loader::loadClass('Zend_Gdata_YouTube');
$yt = new Zend_Gdata_YouTube();

Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
// start a new session 
session_start();

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


function getAuthSubHttpClient()
{
if (!isset($_SESSION['sessionToken']) && !isset($_GET['token']) ){
    echo '<a href="' . 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;
}
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
$authenticationURL= 'https://www.google.com/accounts/ClientLogin';
$httpClient = 
 Zend_Gdata_ClientLogin::getHttpClient(
          $username = 'myuser@gmail.com',
          $password = 'mypassword',
          $service = 'youtube',
          $client = null,
          $source = 'MySource', // a short string identifying your application
          $loginToken = null,
          $loginCaptcha = null,
          $authenticationURL);
$developerKey = 'ABC123 ... ';
$applicationId = 'Video uploader v1';
$clientId = 'My video upload client - v1';

$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);

// Assuming that $yt is a valid Zend_Gdata_YouTube object
$yt->setMajorProtocolVersion(2);
function getAndPrintVideoFeed($location = Zend_Gdata_YouTube::VIDEO_URI)
{
$yt = new Zend_Gdata_YouTube();
// set the version to 2 to receive a version 2 feed of entries
$yt->setMajorProtocolVersion(2);
$videoFeed = $yt->getVideoFeed($location);
printVideoFeed($videoFeed);
}

function printVideoFeed($videoFeed)
{
$count = 1;
foreach ($videoFeed as $videoEntry) {
echo "Entry # " . $count . "\n";
printVideoEntry($videoEntry);
echo "\n";
$count++;
}
}

// Note that this example creates an unversioned service object.
// You do not need to specify a version number to upload content
// since the upload behavior is the same for all API versions.
$yt = new Zend_Gdata_YouTube($httpClient);

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

$myVideoEntry->setVideoTitle('My Test Movie');
$myVideoEntry->setVideoDescription('My Test Movie');
// 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);
$tokenValue = $tokenArray['token'];
$postUrl = $tokenArray['url'];

// place to redirect user after upload
$nextUrl = 'http://www.example.com/youtube_uploads';

// build the form
$form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
    '" method="post" enctype="multipart/form-data">'. 
    '<input name="file" type="file"/>'. 
    '<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
    '<input value="Upload Video File" type="submit" />'. 
    '</form>';
echo "aaaa".$form;

?> 

1 个答案:

答案 0 :(得分:1)

这是我的Zend代码

    //include Zend Gdata Libs

require_once("Zend/Gdata/ClientLogin.php");       
require_once("Zend/Gdata/HttpClient.php");          
require_once("Zend/Gdata/YouTube.php");          
require_once("Zend/Gdata/App/HttpException.php");         
require_once('Zend/Uri/Http.php');

//yt account info
$yt_user = 'myuser@gmail.com'; //youtube username or gmail account
$yt_pw = 'mypassword'; //account password
$yt_source = 'title of my video'; //name of application (can be anything)

//yt dev key  get here : https://code.google.com/apis/youtube/dashboard/
$yt_api_key = ''ABC123 ... ''; //your youtube developer key

//login in to YT
$authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                                          $username = $yt_user,
                                          $password = $yt_pw,
                                          $service = 'youtube',
                                          $client = null,
                                          $source = $yt_source, // a short string identifying your application
                                          $loginToken = null,
                                          $loginCaptcha = null,
                                          $authenticationURL);

// Note that this example creates an unversioned service object.
// You do not need to specify a version number to upload content
// since the upload behavior is the same for all API versions.
//$yt = new Zend_Gdata_YouTube($httpClient);
$yt = new Zend_Gdata_YouTube($httpClient, $yt_source, NULL, $yt_api_key);

我可以上传我的文件,过了一会儿我被重定向到“$ nextUrl”。 我的问题是我收到了这个页面:http://www.example.com/youtube_uploads?statu=400&error=failed 我不是没有原因。

请问任何想法?