我正在尝试使用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。
任何人都有线索?
感谢阅读。