・Google カレンダーの API とツール - Google Code
http://code.google.com/intl/ja/apis/calendar/
Google データ プロトコルを活用すれば、Google カレンダーのすべての機能にアクセスできるアプリケーションを作成できます。
Google Maps APIのようにサービス個別にAPIがあるのではなくて、Google Data APIプロトコルでGoogleカレンダーとやりとりができるとのこと。もちろん、Googleカレンダーへログインできるアカウントがある前提です。で、プログラミングを行うにあたり、どの言語を使おうか迷いましたが、とりあえず激しい動きをさせる予定も無いのでPHPというこで話を進めたいと思います。
開発環境の導入
僕の現状の開発環境は、
- OS:CentOS 5
- PHP:5.1.6
Googleカレンダーの開発者ガイドによると、
・Data API Developer's Guide: PHP - Google Calendar APIs and Tools - Google Code
http://code.google.com/intl/ja/apis/calendar/data/1.0/developers_guide_php.html
PHPからZend Frameworkのライブラリを利用してGoogle Data APIへアクセスする方法が解説されています。必要な環境は、
- PHP 5.1.4以降
- Zend Framework 1.0.0 RC2a以降
とりあえずPHPは現状のものを利用します。Zend Frameworkは入れてませんが、フレームワークその物でなくても、Google Data APIならZend Gdataを利用すれば良いとのことで、こちらだけをダウンロードしてみます。
・Zend Framework: Downloads: Downloads
http://framework.zend.com/download/gdata
※2011/07/04現在で、Zend Gdata 1.11.7が最新
これをダウンロードし、
$ wget http://framework.zend.com/releases/ZendGdata-1.11.7/ZendGdata-1.11.7.tar.gz
展開。
$ tar zxvf ZendGdata-1.11.7.tar.gz
開発環境の設定:ライブラリを認識させる
先ほどの開発者ガイドのサンプルプログラムを、今環境のまま実行させようとすると、Apacheのエラーログに以下のようなのが吐かれました。
[Mon Jul 04 00:13:13 2011] [error] [client 192.168.1.1] PHP Fatal error:
Zend_Loader::require_once() [<a href='function.require'>function.require</a>]: Failed opening
required 'Zend/Exception.php' (include_path='.:/usr/share/pear:/usr/share/php') in
/var/www/html/ZendGdata-1.11.7/library/Zend/Loader.php on line 98
・Getting Started with the Google Data PHP Client Library - Google Data Protocol - Google Code
http://code.google.com/intl/ja/apis/gdata/articles/php_client_lib.html
によれば、Zend GDataのライブラリをPHPに認識させろ!とのことで、ライブラリを認識させるには、以下の3つの方法があるようです。
- php.iniファイルでパスを通す
- Apache環境なら、.htaccessファイルを作成してパスを通す
- プログラミングするPHPファイルから動的に呼び出す
まあ一応、自宅サーバの管理者なので、php.iniを編集してパスを通したいと思います。Zend GDataを展開したパスが、
/usr/lib/php/ZendGdata-1.11.7
なので、php.iniファイルを開き、include_pathの所に、
include_path = ".:/php/includes:/usr/share/pear:/usr/lib/php/ZendGdata-1.11.7/library"
と追記してやればOK。ちなみに、php.iniファイルの場所は、
# php -r 'phpinfo();'
というコマンドで調べることが可能です。これでApacheをリスタートさせてやれば、Zend GDataライブラリを認識してくれます。
スクリプトでPHP環境の確認
Zend Frameworkが使える状態にあるかどうかは、以下のファイルを実行環境に落として実行してみるとわかります。
http://framework.zend.com/svn/framework/standard/trunk/demos/Zend/Gdata/InstallationChecker.php
[実行結果:正常]
[実行結果:エラー]
# yum install php-xml
でDOMの拡張機能をインストールした後、Apacheをリスタートで解決
[実行結果:エラー]
上記の開発環境の設定作業で解決
このチェックはあくまでもZend Frameworkを動かす用のチェックだと思うので、Googleカレンダーを操作するのに、必ずしも正常状態にする必要はないかもしれませんが、まぁ、一つの目安ということで。
サンプルコード
<?php
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
echo "hello Zend Framework!";
$user = 'hogehoge@gmail.com'; // ログインアドレス
$pass = 'password'; // ログインパスワード
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name for calendar
$client = Zend_Gdata_ClientLogin::getHttpClient($user,$pass,$service);
$gdataCal = new Zend_Gdata_Calendar($client);
$calFeed = $gdataCal->getCalendarListFeed();
echo '<h1>' . $calFeed->title->text . '</h1>';
echo '<ul>';
foreach ($calFeed as $calendar) {
echo '<li>' . $calendar->title->text . '</li>';
}
echo '</ul>';
?>
このPHPファイルをWebサーバへアップロードして、問題無く実行されれば、登録しているカレンダーの一覧が表示されます。
[...] HPからGoogleカレンダー操作1:Zend Framework(Zend Gdata)の環境を整える | とびこみ日記 http://takaiwa.net/archives/545 にZend Frameworkの動作確認の方法も書いてありました。 共有:TwitterFacebookいいね:い [...]
返信削除