0

我一直在尝试使用 CakePHP 中的 ZEND GData API 并让它设置和检索日历列表。

所有这些都有效,但是当我尝试检索日历事件时,我收到一个错误的请求错误,我不知道如何解决它。这是运行脚本时收到的错误消息的代码。

*注意:我正在使用 XAMPP 从我的机器上测试这个

        //GET LIST OF EVENTS
        $index = 0;
        foreach($listFeed as $list) {
            $query = $service->newEventQuery($list->link[0]->href);
            // Set different query parameters
            $query->setUser('default');
            $query->setVisibility('private');
            $query->setProjection('full');
            $query->setOrderby('starttime');

            // Get the event list
            try {
                $eventFeed[$index] = $service->getCalendarEventFeed($query);
            } catch (Zend_Gdata_App_Exception $e) {
                echo "Error: " . $e->getResponse() . "<br />";
            }
            $index++;
        }

这是错误消息:

错误:HTTP/1.1 400 错误请求内容类型:text/html;charset=UTF-8 日期:2012 年 5 月 14 日星期一 04:04:41 GMT 过期时间:2012 年 5 月 14 日星期一 04:04:41 GMT 缓存控制:私有,max-age=0 X-content-type-options: nosniff X-frame-options: SAMEORIGIN X-xss-protection: 1; mode=block 服务器:GSE 连接:关闭 无效的请求 URI

感谢您的时间和帮助。

4

1 回答 1

3
  1. $service->newEventQuery()这里不需要参数。

  2. 我相信您正在从单个用户那里检索日历列表。假设是你自己。所以

    $query->setUser('default');

    不会帮助您获得任何第二个日历,而只会帮助您获得名称为您的电子邮件地址的主日历。

    参考谷歌开发者协议指南

    要获取提要,请使用您在本文档上一节中找到的 URL 向日历发送以下 HTTP 请求:

    GET https://www.google.com/calendar/feeds/userID/private-magicCookie/full

    因此,将 userID 替换为您的 calendarID 以获取特定日历的事件源。

尝试

    $index = 0;
    foreach($listFeed as $list) {
        $calendarID = $list->id->text;
        $user = str_replace("http://www.google.com/calendar/feeds/default/owncalendars/full/", '', $calendarID);
        $query = $service->newEventQuery();
        // Set different query parameters
        $query->setUser($user);
        $query->setVisibility('private');
        $query->setProjection('full');
        $query->setOrderby('starttime');

        // Get the event list
        try {
            $eventFeed[$index] = $service->getCalendarEventFeed($query);
        } catch (Zend_Gdata_App_Exception $e) {
            echo "Error: " . $e->getResponse() . "<br />";
        }
        $index++;
    }
于 2012-05-29T03:58:44.700 回答