【发布时间】:2017-05-23 13:40:27
【问题描述】:
我正在尝试用 C# 编写一个简单的 api,除其他外,该 api 将用于使用 Graph api 从用户日历中删除事件。
我遇到的问题是我无法删除需要取消的事件,显然是因为它们需要被取消。但是,我不知道如何编写一个函数来实际取消这些事件。我目前正在使用https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/event_cancel 尝试取消一个事件,并且我得到了一个成功状态码......但没有任何反应。该活动没有取消,也没有从我的日历中删除。
非常感谢任何建议或意见。我的取消活动代码如下。
public async void CancelAppointment(string eventId)
{
try
{
var client = GetHttpClient();
Uri targetEndpoint = new Uri("https://graph.microsoft.com/beta/me/events/" + eventId + "/cancel");
string postBody = "{" +
"\"Comment\": \"Appointment canceled.\"" +
"}";
var body = new StringContent(postBody, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync(targetEndpoint, body);
Console.WriteLine(response.StatusCode);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("Canceled appointment with Id: " + eventId);
}
}
catch (Exception e)
{
Console.WriteLine("Could not cancel appointment " + eventId + " " + e.Message);
}
}
【问题讨论】:
-
I'm getting a success status code成功后您应该收到202 Accepted。您是否在请求中添加了不记名访问令牌? -
@HamletHakobyan 是的,我收到 202 已接受。我将不记名访问令牌添加到请求中,作为返回 HTTP 客户端的 GetClient() 函数的一部分。
-
The event isn't canceled, and it isn't removed from my calendar你是怎么观察到的?之后你给GET me/events/{id}打过电话吗? -
@HamletHakobyan 我现在就试试。我打开了日历,以便在运行测试时可以实时查看所有内容。其他一切(创建新事件、更新事件、删除不需要取消的事件以及获取事件)都可以完美运行。到目前为止,我一开始就收到了事件,但我会在调用它之后尝试添加另一个 GET。
-
@HamletHakobyan 因此,在添加了额外的 GET 之后,我发现该事件确实被取消/不再存在。但是,在我的 Outlook.com 日历本身中,即使在重新加载页面后事件仍然存在,我仍然必须手动取消它才能将其删除/实际上向与会者发送取消消息。
标签: c# .net microsoft-graph-api outlook.com