मैंने क्लाइंटलॉगिन का उपयोग करके इसे पूरा कर लिया है। एक मूल वर्ग नीचे है। यह वर्ग ज़ेंड HTTP क्लाइंट का एक उदाहरण देता है जो प्रमाणित अनुरोध करने के लिए तैयार है।
<?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
या उन्हें में पारित करने के लिए वर्ग को संशोधित ट्राई/कैच की जरूरत है क्योंकि टोकन की समय सीमा समाप्त कर सकते हैं। उन्हें ताज़ा करने के लिए। साथ ही, आपको यह सुनिश्चित करने के लिए एक डमी अनुरोध करना होगा कि टोकन इसे बनाने के बाद भी मान्य है।
ध्यान रखें कि YouTube (ठीक है, 2 साल पहले या तो) ने आपको हर 10 मिनट से अधिक वीडियो अपलोड करने से रोका, जिससे आपका उपयोग-मामला बहुत मुश्किल हो जाता है। यही है, आप एक ही खाते की ओर से कई वीडियो अपलोड होने की अनुमति नहीं दे सकते हैं, हर 10 मिनट से अधिक। लेकिन तब से यूट्यूब ने इसे उठा लिया होगा। शुभकामनाएं
स्रोत
2011-02-16 02:26:54
बहुत बहुत धन्यवाद! खैर, नवंबर अब बहुत दूर है, लेकिन मैं एक और परियोजना का इंतजार करूँगा, यह सवाल फिर से उठ सकता है - मैं जवाब सत्यापित नहीं कर सकता, लेकिन मुझे यकीन है कि इससे मुझे (और दूसरों) किसी भी तरह मदद मिलेगी। मेरे पास इसके बारे में विशिष्ट प्रश्न हैं, लेकिन मुझे दुर्भाग्यवश उन्हें किसी अन्य समय के लिए छोड़ना होगा। चीयर्स, और बहुत बहुत धन्यवाद। – MEM