繁体   English   中英

Microsoft Graph API - 确定日历事件是否已存在 - C#

[英]Microsoft Graph API - Determine if calendar event already exists - C#

我正在使用 Microsoft Graph API 将日历事件插入到我们的域用户 O365 日历中。 我需要确定事件是否存在,但我的研究只展示了如何使用 GraphClient.Me.Events 场景进行搜索。 我不相信这会起作用,因为我们可以全局访问我们域内的所有日历(Calendars.ReadWrite)。

有什么方法可以在同步之前在适用的域用户日历中搜索事件?

var scopes = new string[] { "https://graph.microsoft.com/.default" };
var confidentialClient = ConfidentialClientApplicationBuilder.Create(clientId).WithTenantId(tenantId).WithClientSecret(clientSecret).Build();
var authResult = await confidentialClient.AcquireTokenForClient(scopes).ExecuteAsync();
            
using (HttpClient c = new HttpClient())
{
    string url = "https://graph.microsoft.com/v1.0/users/" + userEmail + " /calendar/events";
    ToOutlookCalendar createOutlookEvent = CreateEvent();

    HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(createOutlookEvent), Encoding.UTF8, "application/json");
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
    request.Content = httpContent;
    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);

var response = await c.SendAsync(request);
var responseString = await response.Content.ReadAsStringAsync();  
}

日历事件目前测试起来非常简单

public static ToOutlookCalendar CreateEvent()
{
     ToOutlookCalendar outlookEvent = new ToOutlookCalendar
     {
          Subject = "Code test migration appt",
          Body = new Body
          {
              ContentType = "HTML",
              Content = "Testing API with application client authorization"
          },
          Start = new End
          {
               DateTime = "2020-06-22T12:30:00",TimeZone = System.TimeZone.CurrentTimeZone.StandardName
          },
          End = new End
          {
               DateTime = "2020-06-22T14:00:00",TimeZone = System.TimeZone.CurrentTimeZone.StandardName
          },
          Location = new LocationName
          {
               DisplayName = "Sample Location"
          }
     };
     return outlookEvent;
}

假设您的目标是用户的默认日历,是的。

/me路径段是 upn 或 userId 的别名,例如:
"https://graph.microsoft.com/v1.0/users/" + userEmail + "/calendar/events?$filter=subject eq '" + knownTitle + "'"
如果您使用的是具有足够权限的仅限应用程序的令牌,则应该可以正常工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM