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