1

2 つの機能を持つ YiiFramework で 1 つのアプリケーションを作成しました。

1. Login to google

Google にログインするには、以下の Web サイトのチュートリアルに従いました。

チュートリアル: 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=約

[第 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 ライブラリには、再度ログインせずに現在のユーザーのカレンダーを自動的に取得する関数が含まれていますか (ここではハードコーディングされています)。

これで立ち往生。感謝します。ありがとう

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 に答える