我正在使用Google Calendar API在Google App Engine應用程序中創建單個事件事件。Google Calendar API創建事件返回201,但未創建任何事件
的JSON編碼的事件是這樣的:
event = {"data":{
"title": "Test Event",
"details": "Details of test event",
"transparency": "opaque",
"status": "confirmed",
"location": "My Place",
"when": [{
"start": "2013-03-05T15:00:00.000Z",
"end": "2013-03-05T17:00:00.000Z"
}]
}}
我使用添加事件的代碼:
def sendGCalEvent(self, event):
scope = "https://www.google.com/calendar/feeds/"
authorization_token, _ = app_identity.get_access_token(scope)
logging.info("Using token %s to represent identity %s",
authorization_token, app_identity.get_service_account_name())
payload = simplejson.dumps(event)
response = urlfetch.fetch(
"https://www.google.com/calendar/feeds/default/private/full",
method=urlfetch.POST,
payload=payload,
headers = {"Content-Type": "application/json",
"Authorization": "OAuth " + authorization_token})
if response.status_code == 201:
result = simplejson.loads(response.content)
logging.info("Status code was %s, and the returned event looks like %s", response.status_code, result)
return
raise Exception("Call failed. Status code %s. Body %s",
response.status_code, response.content)
一切似乎都工作,它驗證確定,該事件是發佈後,我收到了201迴應,並添加了日曆中添加字段的JSON事件。
但事件沒有創建,它不會顯示在我的日曆上。當我在返回的事件數據中的「備用鏈接」字段中輸入網址時,我的日曆中會顯示一條錯誤消息,提示「事件不存在」
任何關於此問題的幫助都將非常感激。我對Google的API非常陌生,所以希望我錯過了一些明顯的東西。
從來沒有使用API,但你知道'200'是HTTP狀態 - 確定的響應?我無法想象谷歌會擺脫這一點。 – 2013-03-02 18:57:45
@NiklasR根據[RFC2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)201狀態代碼是「請求已完成並導致創建新資源。」 從Calendar API的[procotol guide](https://developers.google.com/google-apps/calendar/v2/developers_guide_protocol#AuthOAuth): >當您發送第二個POST請求(或第一個POST請求沒有重定向的情況下),Calendar創建一個日曆事件,然後返回一個HTTP 201 CREATED狀態代碼,以及一個元素或(在JSON-C)數據對象形式的新事件的副本。 –
pointlessCog
2013-03-02 22:20:05