从Google日历中删除的事件仍会显示在listEvents上

时间:2016-05-09 12:23:12

标签: php google-calendar-api google-api-php-client

当我从我的应用程序中删除事件时,我遇到了一个问题(即使是谷歌日历也是如此)。我的日历包含我的所有活动,我尝试首次删除活动,并且“工作”:我更改了浏览器的标签,并看到了Google日历面板并且活动已成功移除,非常棒!!但是,如果我重新加载我的应用程序的选项卡...我仍然看到事件!!!
此外,如果我从Google日历面板中删除数据,应用程序仍会在API调用中恢复此事件:

foo

$ service是Google_Service_Calendar对象。

谢谢。

修改

这是我删除事件的方式:

$service->events->listEvents($calendar,$eventsParam);

我正在使用codeigniter,我正在使用自己制作的帮手来完成最常用的功能,在这两者之间:

public function removedate()
{
    $service    = getService();
    $service->events->delete($this->input->post("calendar"), getEventId($service));
}

新编辑

还有一件事......当我第一次删除事件时没有问题(并且事件在谷歌日历上被删除),当我刷新我的应用页面时,事件仍然存在,当我尝试再次删除它我收到此错误:

function getService($file=false)
{
    $ci =& get_instance();
    if($file)
        $file = CREDENTIALS_PATH.$file;
    else
        $file = CREDENTIALS_PATH.$ci->session->userdata("identity").".json";
    $ci->g_client->setAccessToken(file_get_contents($file));
    return new Google_Service_Calendar($ci->g_client);
}
function getEventId($service)
{
    $ci =& get_instance();
    $id         = $ci->input->post("id");
    $dni        = $id;
    if(!is_numeric($id))
        $id     = $ci->general_model->getData("users","phone", array("dni"=>$id), true)->phone;

    $min = false;
    $max = false;
    if($ci->input->post("min"))
        $min        = date("c", strtotime ( '-2 hour' , strtotime ( (new DateTime(explode("GMT", $ci->input->post("min"))[0]))->format("c"))));
    if($ci->input->post("max"))
        $max        = (new DateTime(explode("GMT", $ci->input->post("max"))[0]))->format("c");
    $events     = getDates($service, $ci->input->post("calendar"), $min, $max);
    foreach ($events->getItems() as $event)
    {
        if($id==$event->getSummary() || $dni==$event->getSummary())
            return $event->getId();
    }
}

资源已被删除......是的!我知道!!!为什么它仍然存在?

2 个答案:

答案 0 :(得分:1)

获取所有事件

$events = $service->events->listEvents('<calendar_id>');

删除日历中的任何事件

    $result = $service->events->delete('<calendar_id>', '<event_id>');
    echo "<br>========================<br>";
    var_dump($result);
    echo "<br>========================<br>";

答案 1 :(得分:1)

您的应用不应显示状态=已取消的事件。