2012-11-06 43 views
1

我已經在YiiFramework中創建了一個具有兩個功能的應用程序。
zend_gdata:如果已經登錄了應用程序,則獲取Google日曆

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=about

[第1步]我得到使用成功登錄到我的應用程序警予,eauth 。
[第二步]當我需要使用日曆時,我給硬編碼的gmail Id和密碼。

我正在以這種方式訪問​​日曆。

<?php 
    $user = 'your gmail username'; 
    $pass ='your gmail password'; 
    Yii::app()->CALENDAR->login($user, $pass); 
    ?> 

login()在googlecalendar.php文件中。

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

從我的理解,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

所以無論如何,你會希望類似的邏輯(與誼,對不起,我不熟悉)的東西:

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

當然,將不得不以某種方式定義getClient()方法。

希望這會有所幫助!

+0

$ client = Zend_Gdata_ClientLogin :: getHttpClient($ user,$ pass,$ service);會和以前一樣。我不想在getHttpClient()中傳遞用戶名和密碼。希望你明白我的意思。 –

+0

您需要**存儲''客戶端''您從_originally_登錄和_get_它在這裏。 「如果」是一件大事。得到它? –

+1

ohhhh ..是的我現在得到的東西..需要努力工作:) ..謝謝@mmmshuddup –

相關問題