事件未使用Google日历API更新

时间:2011-04-04 09:26:29

标签: php oauth google-calendar-api

我正在尝试使用Google日历API更新日历中的活动,但我无法让它发挥作用。

这是我的更新功能。

我正在使用pecl的oauth扩展名。

public function updateEvent($id,$title,$body,$start,$end){

        $calendar = $this->getCalendars();

        try {

            $feed = $this->fetch($calendar['data']['items']['0']['eventFeedLink']."/".$id);

            $feed['data']['title'] = $title;
            $feed['data']['details'] = $body;
            $feed['data']['when']['0']['start'] = $this->jsDateToGoogleDate($start);
            $feed['data']['when']['0']['end'] = $this->jsDateToGoogleDate($end);

            echo json_encode($feed);

            $this->oauth->fetch($feed['data']['selfLink'],json_encode($feed),OAUTH_HTTP_METHOD_PUT,array("Content-Type"=>"application/json","If-Match"=>"*"));

            print_r(json_decode($this->oauth->getLastResponse(),true));

        } catch (OAuthException $e){
            die("ERR : ".$e->getMessage());
        }
    }

我没有任何错误。

echo json_encode($feed)输出:

{ "apiVersion" : "2.6",
  "data" : { "alternateLink" : "https://www.google.com/calendar/event?eid=bHBkam44Yjk2dDMwYXRxa2dmNzY4dmpkbWMgY3ZlcmJpbm5lbkBmcmVlLWV4cGVydC5jb20",
      "anyoneCanAddSelf" : false,
      "attendees" : [ { "displayName" : "cverbinnen@free-expert.com",
            "email" : "cverbinnen@free-expert.com",
            "rel" : "organizer"
          } ],
      "canEdit" : true,
      "created" : "2011-04-04T07:08:14.000Z",
      "creator" : { "displayName" : "Christophe Verbinnen",
          "email" : "cverbinnen@free-expert.com"
        },
      "details" : "dklj",
      "etag" : "\"F0gCQwRIeip7JGA6WhJQ\"",
      "guestsCanInviteOthers" : true,
      "guestsCanModify" : false,
      "guestsCanSeeGuests" : true,
      "id" : "lpdjn8b96t30atqkgf768vjdmc",
      "kind" : "calendar#event",
      "selfLink" : "https://www.google.com/calendar/feeds/cverbinnen%40free-expert.com/private/full/lpdjn8b96t30atqkgf768vjdmc",
      "sequence" : 0,
      "status" : "confirmed",
      "title" : "nuvo",
      "transparency" : "opaque",
      "updated" : "2011-04-04T07:08:14.000Z",
      "visibility" : "default",
      "when" : [ { "end" : "2011-04-06T13:00:00.000+02:00",
            "start" : "2011-04-06T08:30:00.000+02:00"
          } ]
    }
}

和PUT的输出:

<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gCal='http://schemas.google.com/gCal/2005' xmlns:gd='http://schemas.google.com/g/2005'>

  <id>http://www.google.com/calendar/feeds/cverbinnen%40free-expert.com/private/full/lpdjn8b96t30atqkgf768vjdmc</id>

  <published>2011-04-04T07:08:14.000Z</published>

  <updated>2011-04-04T07:08:14.000Z</updated>

  <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event' />

  <title type='text'>nuvo</title>

  <content type='text'>dklj</content>

  <link rel='alternate' type='text/html' href='https://www.google.com/calendar/event?eid=bHBkam44Yjk2dDMwYXRxa2dmNzY4dmpkbWMgY3ZlcmJpbm5lbkBmcmVlLWV4cGVydC5jb20' title='alternate' />

  <link rel='self' type='application/atom+xml' href='https://www.google.com/calendar/feeds/cverbinnen%40free-expert.com/private/full/lpdjn8b96t30atqkgf768vjdmc' />

  <link rel='edit' type='application/atom+xml' href='https://www.google.com/calendar/feeds/cverbinnen%40free-expert.com/private/full/lpdjn8b96t30atqkgf768vjdmc/63437584094' />

  <author>

    <name>Christophe Verbinnen</name>

    <email>cverbinnen@free-expert.com</email>

  </author>

  <gd:comments>

    <gd:feedLink href='https://www.google.com/calendar/feeds/cverbinnen%40free-expert.com/private/full/lpdjn8b96t30atqkgf768vjdmc/comments' />

  </gd:comments>

  <gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed' />

  <gd:where />

  <gd:who email='cverbinnen@free-expert.com' rel='http://schemas.google.com/g/2005#event.organizer' valueString='cverbinnen@free-expert.com' />

  <gd:when endTime='2011-04-06T11:45:00.000+02:00' startTime='2011-04-06T08:30:00.000+02:00' />

  <gd:transparency value='http://schemas.google.com/g/2005#event.opaque' />

  <gd:visibility value='http://schemas.google.com/g/2005#event.default' />

  <gCal:anyoneCanAddSelf value='false' />

  <gCal:guestsCanInviteOthers value='true' />

  <gCal:guestsCanModify value='false' />

  <gCal:guestsCanSeeGuests value='true' />

  <gCal:sequence value='0' />

  <gCal:uid value='lpdjn8b96t30atqkgf768vjdmc@google.com' />

</entry>

正如您所看到的,PUT的输出与我发送的Feed中的输出不同,因为我发送结束日期为13:00h并且它返回的结束日期未修改(仍然是在晚上11点45分)。

Http响应代码为200。

任何人都有线索?

感谢阅读。

1 个答案:

答案 0 :(得分:0)

错误来自pecl oauth http://pecl.php.net/bugs/bug.php?id=22628

中的自动重定向