Android、Java、Web系、Linux、マラソン等の備忘録

2011/07/04

PHPからGoogleカレンダー操作1:Zend Framework(Zend Gdata)の環境を整える

1 件のコメント
GoogleカレンダーをAPIで操作するには、

・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




[実行結果:正常]


Image [5] 


[実行結果:エラー]


Image [2] 



# yum install php-xml


でDOMの拡張機能をインストールした後、Apacheをリスタートで解決



[実行結果:エラー]


Image [4] 


上記の開発環境の設定作業で解決




このチェックはあくまでも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サーバへアップロードして、問題無く実行されれば、登録しているカレンダーの一覧が表示されます。




Image [7]

1 件のコメント :

  1. [...] HPからGoogleカレンダー操作1:Zend Framework(Zend Gdata)の環境を整える | とびこみ日記 http://takaiwa.net/archives/545 にZend Frameworkの動作確認の方法も書いてありました。 共有:TwitterFacebookいいね:い [...]

    返信削除