【google apis】Zend_GdataでYouTube認証を行う
公開日:
:
google apis
YouTube Data Apiでユーザーのプレイリストにアクセスする場合、ユーザーにアプリケーションを認可してもらう必要があります。
今回はロリポップ!で使えるPHPのZend_GdataでOAuthを利用します。
※参考URLのまとめエントリですので詳細はリンク先をご覧下さい。
Zend_Gdataで認可を行う場合、AuthSubとClientLoginの2つの方法がありますが
AuthSub → Webアプリケーション
ClientLogin → インストールアプリケーション
なので今回はAuthSubを使用します。
※2012/5/11現在AuthSubは廃止予定です。
すぐに使えなくなるわけではなさそうですが今後はOAuth2.0を使う方がよさそうです。
が、Zend_GdataでOAuth2.0を使ったアクセストークンの取得方法がないので、しばらくはAuthSubを使いながら様子をみてみることにします。
まとめ
要するにこんな感じで書きます。
session_start(); //YouTubeApiをインクルード require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_YouTube'); //認証クラスをインクルード Zend_Loader::loadClass('Zend_Gdata_AuthSub'); function getAuthSubHttpClient() { if (!isset($_SESSION['sessionToken']) && !isset($_GET['token']) ){ echo '<a class="btn btn-primary btn-large" href="' . getAuthSubRequestUrl() . '">ログイン</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']); $httpClient->setHeaders('X-GData-Key', "key=${developerKey}"); return $httpClient; } //AuthSubリクエスト function getAuthSubRequestUrl(){ $next = 'http://tubejockey.snow69it.com/'; $scope = 'http://gdata.youtube.com'; $secure = false; $session = true; return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session); } //youtubeサービスオブジェクトを生成 $client = getAuthSubHttpClient(); $client ->setHeaders('X-GData-Key', "key=${developerKey}"); $yt = new Zend_Gdata_YouTube($client);
目次
参考URL
GoogleCodeのデベロッパーキーを取得
事前準備としてデベロッパキーの取得を行います。youtubeのユーザーデータにアクセスするために必要となります。
googleにドメインを登録
googleにドメインを登録します。
これはオプションですが、認証画面でgoogleに登録している旨が表示されるので、これをやっておくとユーザーが認証しやすくなると思います。
さらに認証局の証明書の登録をするとより安全をアピールできますが、今回は割愛します。
ZendのGdata_AuthSubクラスをインポート
YouTubeとAuthSubクラスをインポートします。
//YouTubeApiをインクルード require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata_YouTube'); //認証クラスをインクルード Zend_Loader::loadClass('Zend_Gdata_AuthSub');
single-use tokenを取得
まずはsingle-use tokenを取得します。
これはその名の通り1度しか使えないトークンになるので、取得した後session tokenを取得する必要があります。
【手順】
1.googleの認可画面のURLを取得
2.ユーザーが認可
3.リダイレクトしたURLのGETパラーメータにトークンが格納されている。「?token=トークン」
function getAuthSubRequestUrl(){ $next = 'http://tubejockey.snow69it.com/';//認可後にリダイレクトするURL $scope = 'http://gdata.youtube.com';//認可してもらうサービスのURL $secure = false;//セキュアトークンの取得。ここではfalse。 $session = true;//このあとセッショントークンを取得するか。 return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session); } echo '<a class="btn btn-primary btn-large" href="' . getAuthSubRequestUrl() . '">ログイン</a>';
session tokenを取得
取得したsingle-use tokenをもとにsession tokenを取得します。
このトークンはセッション変数に記録することで繰り返し使用することも、任意のタイミングで破棄(=ログアウト)することもできます。
$_SESSION['sessionToken'] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
認可済みのyoutubeサービスオブジェクトを取得する
session tokenとデベロッパーIDをもとにgdataHttpClientオブジェクトを生成し、YouTubeサービスのコンストラクタの引数とします。
このようにして生成されたYouTubeサービスオブジェクトを使用すると、動画のアップロード及びユーザー固有の情報の取得や編集を行うことができるようになります。
$httpClient = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']); $httpClient->setHeaders('X-GData-Key', "key=${developerKey}");//デベロッパーID $yt = new Zend_Gdata_YouTube($httpClient);
関連記事
-
【google apis】GCM の使い方1 ~Getting Start~
この記事はGCMのGetting Startの要約です。 参考URL ・はじめに G
-
【google apis】GCM の使い方2 ~GCM Architectural Overview~
前回に引き続きGCMの使い方です。 前回:【google apis】GCM の使い方1 ~
-
【google apis】GoogleのアカウントでAOuthを行う
GoogleのAOuthを使う方法です。 サマリー 目次 サイトのURL、リダイレクトする