Google カレンダー API を使用して、Google App Engine アプリ内から単一の発生イベントを作成しています。
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 が返されます。
しかし、イベントは作成されず、カレンダーに表示されません。返されたイベント データの [代替リンク] フィールドの URL に移動すると、カレンダーに「イベントが存在しません」というエラー メッセージが表示されます。
これに関するヘルプは非常に高く評価されます。私は Google の API に非常に慣れていないので、明らかな何かが欠けていることを願っています。