2011年11月29日火曜日

GoogleのOAuthAPIを使う。(Chrome-Extension編)

今日は、新しいChrome-Extensionの開発をしていました。

今回のアプリケーションはGoogleのサービスを利用したかったので、
GDataAPIのドキュメントを見てみると、JavaScript版はすでに非推奨になっており、
最新のv3ではJavaScriptのAPIが存在しないようなので、v2で実装してやろうと
思ったのですが、Chrome-Extensionからだとうまくいかず。

どううまくいかないかというと、
var token = google.accounts.user.login(scope);
を実行すると、ログインした状態でもtokenがnullを返してくる。
(ローカル実行だからなのかもしれない。サイト上におけば結果が変わると思います)

という事で、仕方が無いので別の方法を探そうと思ったらいいライブラリがありました。
http://code.google.com/chrome/extensions/tut_oauth.html

これを利用するとChrome-ExtensionでもOAuth認証を行うことができると
言うことだったのですが、これを利用して、今日1日終わってしまいました。

BackgroundPageからoauth.authorize(onAuthorized);を呼び出すと、
新しいtabが表示されて、Googleのアプリケーション認証画面が表示されます。
が、今度はライブラリ側で実行されている、ChromeExOAuth.initCallbackPage();
(※chrome_ex_oauth.htmlファイル内で呼び出されている)
を実行すると、XMLHttpRequestのstatusが0になり、エラー扱いに
なってしまうようです。

ちなみに、上記のライブラリを利用するためには、ConsumerKeyとConsumerSecretが
必要なのですが、https://accounts.google.com/ManageDomainsのサイトで、
ドメインでの認証キーを取得すれば、利用することができるようになります。
(Chrome-Extensionでドメインの認証キーを利用するのがいいかどうかは不明です)
ちなみに、Google App Engineの[appID].appspot.comでも認証キーを取得する
事が可能なようなので、静的な認証用のファイルをアップロードしておいて、
Google App Engineではそれを利用すると良いと思います。


2011年11月7日月曜日

CodeIgniterを使ったアプリケーションのUnitTest

今年から、専門学校の授業でPHPを教えているのですが、
その授業のネタとしてCodeIgniterを利用しています。

基本的な機能について、大体触ったので、これから実践的な
内容にしようと思って、教科書にしている「CodeIgniter徹底入門」を
見ていると、フレームワークでユニットテストのライブラリが用意されているようなので
試してみました。使い方は、以下のように
ライブラリを読み込み、テストを実行、レポートを出力する。
最後に確認という感じです。

// ライブラリの読み込み
$this->load->library('unit_test');
// テストの実行
$this->unit->run(実行するメソッド、評価対象, 期待する実行結果, テストの名前);
// テスト結果(レポート)の表示
echo $this->unit->report();

ちなみに、以下の本です。


ただ、これだとブラウザでリクエストしないとテストが実行できないので、
テストコードも本番環境にデプロイしないといけなさそうです。

が、授業の一環なので、ひとまずはこれで良いかな。

で、データベースのテストに関して調べていたら、本番用とテスト用で
データベースを切り替えるか、テスト用のテーブルを用意するしかなさそうな感じ。