zend_gdata:如果已登录应用程序,请获取Google日历

时间:2012-11-06 08:31:22

标签: php google-calendar-api zend-gdata yii-extensions

我在YiiFramework中创建了一个具有两个功能的应用程序。

1. Login to google

要登录google,我已按照以下网站上的教程进行操作。

教程:https://github.com/Nodge/yii-eauth
教程演示:http://nodge.ru/yii-eauth/demo/login

2  Get calendar using Zend_Gdata Library

教程:http://www.bcits.co.in/googlecalendar/index.php/site/install
教程演示:http://www.bcits.co.in/googlecalendar/index.php/site/page?view=about

[第1步]我使用yii-eauth成功登录我的应用程序。
[第2步]当我需要使用日历时,我会给出硬编码的gmail ID和密码。

我正在以这种方式访问​​日历。

  <?php 
     $user = 'your gmail username';
     $pass ='your gmail password';
     Yii::app()->CALENDAR->login($user, $pass);
  ?>
googlecalendar.php文件中的

login()。

 public function login($user, $pass) {

    $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);// It uses hard-coded gmail/password to get login again
    $calenderlist = $this->outputCalendarList($client);
    $events = $this->outputCalendar($client);
    $calendardate = $this->outputCalendarByDateRange($client, $startDate = '2011-05-01', $endDate = '2011-06-01');
     .........
  }

Zend_Gdata库是否包含任何自动获取当前用户日历而无需再次登录的功能(此处为硬编码)。

坚持这一点。欣赏有帮助。感谢

1 个答案:

答案 0 :(得分:0)

根据我的理解,Zend_Gdata_ClientLogin$client设置了一些参数,这些参数是返回的对象。请参阅该函数的以下摘录:

if ($loginToken || $loginCaptcha) {
    if ($loginToken && $loginCaptcha) {
        $client->setParameterPost('logintoken', (string) $loginToken);
        $client->setParameterPost('logincaptcha', (string) $loginCaptcha);
    } else {
        require_once 'Zend/Gdata/App/AuthException.php';
        throw new Zend_Gdata_App_AuthException(
            'Please provide both a token ID and a user\'s response ' .
            'to the CAPTCHA challenge.');
    }
}

您可以做的是存储该令牌或$client对象(Zend_Gdata_HttpClient的实例)。几乎所有Zend_Gdata组件都接受$client参数。

查看__construct()的{​​{1}}方法:

所以无论如何,你会想要类似于这种逻辑的东西(对不起,我不熟悉Yii):

Zend_Gdata_Calendar

当然,必须以某种方式定义$client = Yii::app()->getClient(); if (!$client) { $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service); Yii::app()->setClient($client); } 方法。

希望这有帮助!