0

任何人都知道在不依赖当前登录用户的情况下直接验证和发布到日历的正确方法吗?几周前,我构建了一个使用标准 Oauth 2.0 协议的日历,但这依赖于用户浏览器存储的会话。我有一个日历,我想将事件传递给我正在使用基本 PHP 框架编写的应用程序。我更关心其他人正在使用的最佳实践。你的答案可能很简单,不要这样做。非常感谢。

4

2 回答 2

1

使用 OAuth 2 和授权代码流(Web 服务器流),并启用离线。存储刷新令牌(无限期地持续到用户撤销),即使用户当前未登录,您也可以将事件上传到 Google 日历。

更多信息: https ://developers.google.com/accounts/docs/OAuth2WebServer#offline

于 2012-08-10T22:08:18.380 回答
1

使用这个库尝试 Zend_Gdata_Calendar,您可以从谷歌日历中插入或获取来自任何用户(显然使用正确的用户名和密码)的事件,并与您自己的日历集成或显示它..这里有一个简短的例子:

    $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 回答