1

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

1. Login to 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=关于

[第一步] 我使用 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 库是否包含任何无需再次登录即可自动获取当前用户日历的功能(此处为硬编码)。

坚持这一点。感谢帮助。谢谢

4

1 回答 1

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()方法Zend_Gdata_Calendar

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

$client = Yii::app()->getClient();
if (!$client) {
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
    Yii::app()->setClient($client);
}

当然,必须以getClient()某种方式定义该方法。

希望这可以帮助!

于 2012-11-06T08:42:43.480 回答