0

現在ログインしているユーザーに依存せずに、認証してカレンダーに直接公開する適切な方法を知っている人はいますか?数週間前、標準のOauth 2.0プロトコルを使用するカレンダーを作成しましたが、これはユーザーのブラウザによって保存されたセッションに依存していました。基本的なPHPフレームワークを使用して作成しているアプリケーションからイベントを渡すカレンダーが1つあります。私は、他の人が使用しているベストプラクティスにもっと関心があります。あなたの答えは単純かもしれません、それをしないでください。どうもありがとう。

4

2 に答える 2

1

このライブラリでZend_Gdata_Calendarを試してみてください。このライブラリを使用すると、Googleカレンダーから任意のユーザー(明らかに正しいユーザー名とパスワードを使用)からイベントを挿入または取得し、独自のカレンダーと統合したり、表示したりできます。簡単な例:

    $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
    $client = Zend_Gdata_ClientLogin::getHttpClient('gmail@user.com',    'gmailpassword', $service);
    $service = new Zend_Gdata_Calendar($client);



    $query = $service->newEventQuery();
    $query->setUser('default');
    $query->setVisibility('private');


    try {
         $eventFeed = $service->getCalendarEventFeed($query);
    } catch (Zend_Gdata_App_Exception $e) {
        echo "Error: " . $e->getMessage();
    }


    echo "<ul>";
    foreach ($eventFeed as $event) {
     echo "<li>" . $event->title . " (Event ID: " . $event->id . ")</li>";

    }
    echo "</ul>";



    $eventURL = "http://www.google.com/calendar/feeds/default/private/full/Dir0FthEpUbl1cGma1lCalendAr";

    try {
        $event = $service->getCalendarEventEntry($eventURL);

        echo 'Evento: ' . $event->getTitle() .'<br>';
        echo 'detalles: ' . $event->getContent().'<br>';
        foreach ($event->getWhen() as $dato)
        {
            echo 'inicia: ' . substr($dato->startTime, 0,-19) . ' a las: ' . substr($dato->startTime, 11,-10) .'<br>';
            echo 'termina: ' .substr($dato->endTime,0,-19) . ' a las: ' . substr($dato->endTime,11,-10) .'<br>';

        }  



    } catch (Zend_Gdata_App_Exception $e) {
        echo "Error: " . $e->getMessage();
    }

これを使用すると、メールとパスワードを持つすべてのユーザーからカレンダーからイベントを追加、更新、編集、または削除できます...

于 2012-08-10T20:34:56.693 に答える
1

オフラインを有効にして、OAuth 2と認証コードフロー(Webサーバーフロー)を使用します。更新トークン(ユーザーが取り消すまで無期限に有効)を保存すると、ユーザーが現在ログインしていない場合でも、イベントをGoogleカレンダーにアップロードできます。

詳細: https ://developers.google.com/accounts/docs/OAuth2WebServer#offline

于 2012-08-10T22:08:18.380 に答える