繁体   English   中英

Microsoft Graph - 创建 Outlook/团队会议作为 application.Net/C#

[英]Microsoft Graph - Create outlook/teams meeting as a application .Net/C#

我正在尝试将会议创建为应用程序,添加与会者,确定时间可用性。

这是我到目前为止所拥有的:

认证

private async Task<ClientCredentialProvider> GetToken()
{
    var confidentialClientApplication = ConfidentialClientApplicationBuilder
        .Create(_microsoftAppId)
        .WithTenantId(_microsoftTenantId)
        .WithClientSecret(_microsoftAppPassword)
        .Build();

    ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
    return authProvider;
}
    

会议要求

public async Task GetMeetingtime()
{
    var authProvider = await GetToken();
    GraphServiceClient graphClient = new GraphServiceClient(authProvider);

    var attendees = new List<AttendeeBase>()
    {
        new AttendeeBase
        {
            Type = AttendeeType.Required,
            EmailAddress = new EmailAddress
            {
                Name = "john doe",
                Address = "john.doe@onmicrosoft.com"
            }
        },

        new AttendeeBase
        {
            Type = AttendeeType.Required,
            EmailAddress = new EmailAddress
            {
                Name = "john toe",
                Address = "john.toe@onmicrosoft.com"
            }
        }
    };


    var locationConstraint = new LocationConstraint
    {
        IsRequired = false,
        SuggestLocation = false,
        Locations = new List<LocationConstraintItem>()
        {
            new LocationConstraintItem
            {
                ResolveAvailability = false,
                DisplayName = "Conf room Hood"
            }
        }
    };


    var timeConstraint = new TimeConstraint
    {
        ActivityDomain = ActivityDomain.Work,
        TimeSlots = new List<TimeSlot>()
        {
            new TimeSlot
            {
                Start = new DateTimeTimeZone
                {
                    DateTime = "2020-12-10T09:00:00",
                    TimeZone = "Pacific Standard Time"
                },
                End = new DateTimeTimeZone
                {
                    DateTime = "2020-12-10T17:00:00",
                    TimeZone = "Pacific Standard Time"
                }
            }
        }
    };

    var isOrganizerOptional = false;

    var meetingDuration = new Duration("PT1H");

    var returnSuggestionReasons = true;

    var minimumAttendeePercentage = (double)100;

    await graphClient
        .Me
        .FindMeetingTimes(attendees, locationConstraint, timeConstraint, meetingDuration, null, isOrganizerOptional, returnSuggestionReasons, minimumAttendeePercentage)
        .Request()
        .Header("Prefer", "outlook.timezone=\"Pacific Standard Time\"")
        .PostAsync();
}

这是我得到的错误:

Current authenticated context is not valid for this request. This occurs when a request is made to an endpoint that requires user sign-in. For example, /me requires a signed-in user. Acquire a token on behalf of a user to make requests to these endpoints. Use the OAuth 2.0 authorization code flow for mobile and native apps and the OAuth 2.0 implicit flow for single-page web apps.

我该如何解决这个问题?

根据文档,findMeetingTimes API 不支持仅应用程序访问: https://docs.microsoft.com/en-us/graph/api/user-findmeetingtimes?view=graph-rest-1.0&tabs=http 它只能在登录用户的上下文中调用。 现在,您可以尝试使用.Users["user-id"]而不是.Me ,以防万一文档对此有误。 “我”仅在代表用户调用 API 时才有意义,而您不是。

日历事件可以创建为对用户日历具有写入权限的应用程序。

暂无
暂无

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

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