我正在开发日历api客户端,我有提醒问题 - 它们不起作用......
我创建这样的事件:
Event gEvent = new Event()
{
Summary = "Reminder test",
Location = "Reminder test",
Start = new EventDateTime()
{
DateTime = new DateTime(2014, 12, 14, 21, 0, 0),
},
End = new EventDateTime()
{
DateTime = new DateTime(2014, 12, 14, 22, 0, 0),
},
Reminders = new Event.RemindersData()
{
UseDefault = false,
Overrides = new List<EventReminder>()
{
new EventReminder()
{
Method = "email",
Minutes = 15
},
new EventReminder()
{
Method = "email",
Minutes = 30
},
new EventReminder()
{
Method = "email",
Minutes = 45
},
}
}
};
Event simpleEvent = calService.Events.Insert(gEvent, strCalendarID).Execute();
此代码有效,在我的谷歌日历GUI中真正创建了我的活动,但如果我点击编辑活动 - 我看不到我的提醒,则只有默认提醒。 为什么?我做错了什么?
感谢所有答案
今天我尝试使用JSON从代码发送请求。我的方法看起来像这样:
private static void CreateSimpleEvent(string strAccessToken, string strCalendarID, string strApiKey)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format("https://www.googleapis.com/calendar/v3/calendars/{0}/events?sendNotifications=false&fields=reminders&key={1}", strCalendarID, strApiKey));
request.Method = "POST";
request.ContentType = "application/json";
request.UserAgent = "TestCalendarApi2";
request.Headers.Add("Authorization", "Bearer " + strAccessToken);
string strJson = @"{
'end': {
'dateTime': '2014-12-19T15:30:00.000Z',
'timeZone': 'Europe/Prague'
},
'start': {
'dateTime': '2014-12-19T14:30:00.000Z',
'timeZone': 'Europe/Prague'
},
'reminders': {
'useDefault': false,
'overrides': [
{
'method': 'email',
'minutes': 13
}
]
}
}";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(strJson);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
}
方法进行正常并且在谷歌日历中创建了事件,但是当我使用来自ServiceAccountCredential对象的AccessToken时,提醒仍然缺失:(。当我使用在Apis资源管理器(https://developers.google.com/apis-explorer/#p/calendar/v3/中)生成的AccessToken时 - 提醒正在运行。 问题是,在Apis资源管理器中,我必须打开OAuth2,然后我必须进行重大访问......
有什么办法,如何从代码进行大访问?
感谢所有答案。
答案 0 :(得分:1)
在使用服务帐户来管理Google日历中的事件时出现提醒的问题是,该服务帐户实际上是具有自己的Google日历的虚拟用户。活动提醒是针对每个用户设置的,因此,如果您要以服务帐户身份登录Google日历,则只能看到提醒。与服务帐户共享日历的用户只能看到事件详细信息,但必须设置自己的提醒。
答案 1 :(得分:0)
此处的问题相同,插入的事件没有任何提醒。 通过API资源管理器发送相同的请求已成功插入带提醒的事件。
我的JSON数据:
{
"end":{
"dateTime":"2015-01-19T01:20:00.000",
"timeZone":"Europe\/Minsk"
},
"reminders":{
"useDefault":false,
"overrides":[
{
"method":"sms",
"minutes":"30"
},
{
"method":"email",
"minutes":"60"
}
]
},
"start":{
"dateTime":"2015-01-19T01:15:00.000",
"timeZone":"Europe\/Minsk"
},
"summary":"New event",
"start_date":"2015-01-19 01:15",
"end_date":"2015-01-19 01:20"
}