当前位置: 首页 > 知识库问答 >
问题:

无法使用GraphServiceClient创建具有应用程序标识的在线会议

王昊
2023-03-14

我正在使用Azure AD中的应用程序标识,并授予读写权限,我还运行了Grant CSApplicationAccess策略,以便应用程序标识有权代表Azure AD中的真实用户标识创建在线会议

我知道我的设置与graph api中的get user一起工作。但是,在运行以下操作后,我遇到了错误:

            var confidentialClient = ConfidentialClientApplicationBuilder
                .Create(clientId)
                .WithAuthority($"https://login.microsoftonline.com/{tenantId}/v2.0")
                .WithClientSecret(clientSecret)
                .Build();

            GraphServiceClient graphServiceClient =
                new GraphServiceClient("https://graph.microsoft.com/beta", new DelegateAuthenticationProvider(async (requestMessage) =>
                {

                        var authResult = await confidentialClient
                            .AcquireTokenForClient(scopes)
                            .ExecuteAsync();

                        requestMessage.Headers.Authorization =
                            new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
                })
                    );

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

                var meetingInstance = await graphServiceClient.Me.OnlineMeetings
                    .Request()
                    .AddAsync(onlineMeeting);

错误消息如下,为什么会说用户在AAD中按用户id查找失败?

状态:未找到(404)操作ID:8d06ff01-1dc3-49d1-9ced-9db6a919b162

ClientCorrelationId:53b4478e-ba86-48ca-bb5b-25e5ef50c187

服务器错误:在AAD中按用户id查找用户失败。

客户端异常:处理HTTP请求导致异常。有关详细信息,请参阅此异常的“响应”属性返回的HTTP响应。

内部错误:

其他数据

日期:2020-12-16T21:08:31

请求id:d60858cf-5ef5-4a0d-8d67-181f80ed6c35

客户请求id:d60858cf-5ef5-4a0d-8d67-181f80ed6c35

客户问题ID:d60858cf-5ef5-4a0d-8d67-181f80ed6c35

在微软。图表HttpProvider。微软的SendAsync(HttpRequestMessage请求、HttpCompletionOption completionOption、CancellationToken CancellationToken)。图表基本要求。微软的SendRequestAsync(对象serializableObject、CancellationToken CancellationToken、HttpCompletionOption completionOption)。图表基本要求。MSTeam上的SendAsync[T](对象serializableObject、CancellationToken CancellationToken、HttpCompletionOption completionOption)。程序D:\VSTS\msteam\msteam\msteam\msteam\Program中的Main(字符串[]args)。政务司司长:第62行

共有1个答案

景育
2023-03-14

根据本文件:

使用应用程序令牌时请求:POST/users/{userId}/onlineMeetings

所以你应该使用graphServiceClient。用户[“{userId}”]。在线会议而不是graphServiceClient。我这里是在线会议

userId是用户的对象ID。配置应用程序访问策略时,需要将策略授予用户:

Grant-CsApplicationAccessPolicy -PolicyName Test-policy -Identity "ddb80e06-92f3-4978-bc22-a0eee85e6a9e"

ddb80e06-92f3-4978-bc22-a0eee85e6a9e正是userId

我的代码供您参考:

        // Configure the MSAL client as a confidential client
        var confidentialClient = ConfidentialClientApplicationBuilder
            .Create("{client_id}")
            .WithTenantId("{tenant_id}")
            .WithClientSecret("{client_secret}")
            .Build();

        ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClient);

        GraphServiceClient graphServiceClient = new GraphServiceClient(authProvider);

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

        var meeting = await graphServiceClient.Users["{userId}"].OnlineMeetings
            .Request()
            .AddAsync(onlineMeeting);
 类似资料:
  • 我正试图使用Maven在Eclipse中创建一个Vaadin应用程序,但无法这样做。官方说明(https://vaadin.com/wiki/-/wiki/main/creating%20an%20Eclipse%20project)说要在Eclipse中创建一个新的Maven项目,在原型列表中创建“”vaadin-archetype-application“,我看不到这种类型的东西,然后,我添加

  • 我目前正在试验托管。NET CoreCLR在C应用程序中基本上实现某种插件系统。 我使用corerun源代码作为基础,开始并探索如何构建本机主机—其他教程/文档通常以某种方式失败 最后我让它工作了,我可以初始化运行库,创建AppDomain并执行.NET Core程序集。 我的下一步是运行多个程序集,因此我只是创建了第二个测试程序集,并尝试以与第一个测试程序集相同的方式执行它。 实际上,我的应用程

  • 问题内容: 我收到此错误“无法在未调用Looper.prepare()的线程内创建处理程序” 你能告诉我如何解决吗? StartPayment方法: 问题答案: 您应该知道,当您尝试修改UI时, 唯一 可以执行此操作的线程是。 因此,如果要在另一个线程中修改UI,请尝试使用以下方法: 您的代码应如下所示:

  • 我想创建反应应用程序,但我的npx创建反应应用程序myapp命令不工作D:\AED 在D:\AED\aed中创建新的React应用。 安装包。这可能需要几分钟。使用cra模板安装反应、反应-多姆和反应-脚本... 它被困在这里已经两个小时了。

  • 我正在尝试使用create react应用程序创建新应用程序 下面是错误<请帮忙。提前谢谢 CLI上的错误映像