我想允許任何人在我的網站上註冊,在我自己的YouTube用戶頻道上上傳他們的視頻。Zend Youtube API - 在單個帳戶上上傳視頻?
我不希望他們評論任何視頻或任何需要他們自己的登錄憑據的內容。
我應該使用:ClientLogin授權嗎?
如果是這樣,我如何獲得令牌以便我可以讓我的網站與我的YouTube頻道帳戶進行互動?
在這裏的任何燈將不勝感激,因爲我有點失落在這裏。
我想允許任何人在我的網站上註冊,在我自己的YouTube用戶頻道上上傳他們的視頻。Zend Youtube API - 在單個帳戶上上傳視頻?
我不希望他們評論任何視頻或任何需要他們自己的登錄憑據的內容。
我應該使用:ClientLogin授權嗎?
如果是這樣,我如何獲得令牌以便我可以讓我的網站與我的YouTube頻道帳戶進行互動?
在這裏的任何燈將不勝感激,因爲我有點失落在這裏。
我已經使用ClientLogin完成了此操作。下面是一個基本的課程。這個類返回一個Zend 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
或修改類來傳遞他們需要的try/catch語句,因爲令牌可以到期,所以你需要一種方式刷新它們。此外,您還需要提出虛擬請求,以確保令牌在創建後仍然有效。
請記住,YouTube(截至2年前)阻止您每上傳10分鐘以上的視頻,這會讓您的使用案例變得非常困難。也就是說,您不能允許代表單個帳戶上傳多個視頻,而不是每10分鐘更多一次。但YouTube從那時起可能已經取消了。祝你好運
由於我沒有找到API V3的完整解決方案,所以我一直在探索Internet的解決方案。最後,我移植了Python的例子,以PHP寫了博客文章它有同樣的問題,其他人:
Uploading a video to youtube through api version 3 in PHP
我這篇文章使用YouTube V3 API和OAuth2用戶,所以你不必擔心它會被棄用。 V2中的所有其他功能(ClientLogin,AuthSub和OAuth 1.0)均爲,截至2012年4月20日已全部棄用。
不再好。作爲參考,我從另一個問題的「相關」參考中找到了這個問題解答。 – 2018-01-21 00:51:37
非常感謝!那麼,11月現在已經很遠了,但我會等待另一個項目,這個問題可能會再次出現 - 我無法驗證答案,但我確信它會以某種方式幫助我(和其他人)。我確實有關於它的具體問題,但是我不得不離開他們。歡呼,並再次感謝。嵌入式鏈接的 – MEM 2011-02-17 11:52:00