我在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库是否包含任何自动获取当前用户日历而无需再次登录的功能(此处为硬编码)。
坚持这一点。欣赏有帮助。感谢
答案 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);
}
方法。
希望这有帮助!