intro
Zend_Gdata_AuthSubとZend_Gdata_Calendarを利用して、googleカレンダーへのアクセスを行います。
詳細に関してはProgrammer’s Reference Guide(16.2)を参照してください。
一応デモサイトからも動作を確認できます(セキュリティについては詳しくは知りませんが)。
詳細に関してはProgrammer’s Reference Guide(16.2)を参照してください。
一応デモサイトからも動作を確認できます(セキュリティについては詳しくは知りませんが)。
1.コントローラの作成
以下のように
application/constorllers/GdataController.php
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
<?php require_once 'Zend/Controller/Action.php'; require_once 'Zend/Gdata.php'; require_once 'Zend/Gdata/AuthSub.php'; require_once 'Zend/Gdata/Calendar.php'; require_once 'Zend/Session/Namespace.php'; class GdataController extends Zend_Controller_Action { protected $_session; public function preDispatch() { $this->_session = new Zend_Session_Namespace('GdataController'); } public function indexAction() { $my_calendar = 'http://www.google.com/calendar/feeds/default/private/full'; if (!isset($this->_session->cal_token)) { if (isset($_GET['token'])) { // You can convert the single-use token to a session token. $token = $_GET['token']; $session_token = Zend_Gdata_AuthSub::getAuthSubSessionToken($token); // Store the session token in our session. $this->_session->cal_token = $session_token; } else { // Display link to generate single-use token $googleUri = Zend_Gdata_AuthSub::getAuthSubTokenUri( 'http://'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], $my_calendar, 0, 1); $this->view->message = "Go <a href='$googleUri'>Google Login Screen</a>"; return $this->render(); } } // Create an authenticated HTTP Client to talk to Google. $client = Zend_Gdata_AuthSub::getHttpClient($this->_session->cal_token); // Create a Gdata object using the authenticated Http Client $service = new Zend_Gdata_Calendar($client); $query = $service->newEventQuery(); $query->setUser('default'); $query->setVisibility('private'); $query->setProjection('full'); $query->setOrderby('starttime'); $query->setFutureevents('true'); $this->view->events = $service->getCalendarEventFeed($query); } public function logoutAction() { if (isset($this->_session->cal_token)) { Zend_Gdata_AuthSub::AuthSubRevokeToken($this->_session->cal_token); unset($this->_session->cal_token); } $this->_helper->redirector('index'); } } |
2.ビューの作成
以下のように
application/views/scripts/gdata/index.phtml
ファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php if (isset($this->message)) : ?> <?= $this->message ?> <?php endif; ?> <?php if (isset($this->events)) : ?> <h1>Calendar Event List</h1> <ul> <?php foreach ($this->events as $event) : ?> <li><?= $event->title?>(Event ID:<?= $event->id ?>)</li> <?php endforeach; ?> </ul> <?php endif; ?> <div> <a href="<?= $this->url(array('action'=>'logout'))?>">Logout</a> </div> |
3.確認
Webサーバにアクセスし、googleアカウントでログイン後、カレンダーのリストが表示されることを確認してみてください。
履歴
日付 | 内容 |
---|---|
2008/5/1 | 公開 |