使用Microsoft Graph v1.0 SDK创建OnlineMeeting时出现禁止403错误

时间:2020-01-10 12:10:31

标签: c# api azure-ad-graph-api microsoft-teams

我正在尝试创建在线会议以使用Graph SDK从Microsoft Team Meeting获取joinurl,但是即使我已经向“ OnlineMeetings.Read提供了应用程序(具有管理员同意)和委派权限,但仍收到禁止(403)错误。全部”,“ OnlineMeetings.Read”,“ OnlineMeetings.ReadWrite.All”,“ OnlineMeetings.ReadWrite”。

请在下面查看我的代码,并让我知道我在做什么错或是否需要提供任何其他权限。

下面是我的代码:

 string[] graphScopes = { "OnlineMeetings.Read.All", "OnlineMeetings.Read", 
    "OnlineMeetings.ReadWrite.All", "OnlineMeetings.ReadWrite" };

        IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
            .Create("55e5f6cf-****-****-****-4f23d6e****")
            .WithTenantId("****b9d4-4dbf-****-888f-21d*563b****")
            .WithClientSecret("********************************")
            .Build();


        ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);

        GraphServiceClient graphClient = new GraphServiceClient(authenticationProvider);

        var onlineMeeting = new OnlineMeeting
        {
            StartDateTime = DateTimeOffset.Parse("2020-01-15T21:30:34.2444915+05:30"),
            EndDateTime = DateTimeOffset.Parse("2020-01-15T22:00:34.2464912+05:30"),
            Subject = "User Token Meeting"
        };

        var meeting = graphClient.Me.OnlineMeetings
              .Request()
              .AddAsync(onlineMeeting).Result;

1 个答案:

答案 0 :(得分:0)

Create onlineMeeting仅需要OnlineMeetings.ReadWrite 委派权限。

因此,它需要用户+应用程序授权,而不是仅应用程序授权。

在这种情况下,您使用的是Client credentials provider,这意味着仅应用授权。

您应该使用Authorization code provider来获取访问令牌,其中应包含OnlineMeetings.ReadWrite Delegated 权限。