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

404在没有登录到AzureActiveDirectory的情况下使用microsoft graph api C#创建联机会议时出错

鄢博简
2023-03-14

我正在尝试使用microsoft graph api创建联机会议,而无需登录到AzureActiveDirectory和ASP.NET web应用程序。为此,我的应用程序具有以下权限,这些权限是文档https://docs.microsoft.com/en-us/graph/api/application-post-onlineemetings所需的?view=graph-rest-1.0&tabs=csharp具有客户端凭据auth flow https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow而无需我尝试了micosoft.graph和micosoft.graph.beta仍然得到404错误。

创建联机会议代码

  var graphClient = GetAuthenticatedClientCredential();
            var onlineMeeting = new OnlineMeeting
            {
                StartDateTime = DateTimeOffset.Parse("2020-10-01T10:30:34.2444915+00:00"),
                EndDateTime = DateTimeOffset.Parse("2020-10-01T11:00:34.2464912+00:00"),
                Subject = "Create Online Meeting-Without user login to Office 365"
            };

            return await graphClient.Me.OnlineMeetings
                 .Request()
                 .AddAsync(onlineMeeting);

访问令牌代码

 public static async Task<string> GetUserAccessTokenAsyncByCc()
        {
            IConfidentialClientApplication cca = ConfidentialClientApplicationBuilder.Create(appId)
               .WithTenantId(appTenantId)
               .WithClientSecret(appSecret)
               .Build(); 
            
             string[] scopes1 = new string[] { "https://graph.microsoft.com/.default" };
            //string[] scopes1 = new string[] { "https://graph.microsoft.com/OnlineMeetings.ReadWrite.All" };
            // string[] scopes1 = new string[] { "https://graph.microsoft.com/beta/OnlineMeetings.Read.All" };
            //string[] scopes1 = new string[] { "https://graph.microsoft.com/beta/.default" };
            var result = await cca.AcquireTokenForClient(scopes1).ExecuteAsync();
           
            return result.AccessToken;
        }

和Auth提供程序代码

public static GraphServiceClient GetAuthenticatedClientCredential()
        {

            DelegateAuthenticationProvider provider = new DelegateAuthenticationProvider(
                     async (requestMessage) =>
                     {
                         string accessToken = await GetUserAccessTokenAsyncByCc();
                         requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
                     });

            GraphServiceClient graphClient = new GraphServiceClient(provider);

            return graphClient;


        }

应用程序权限图片下面是必要的应用程序权限

共有1个答案

燕寒
2023-03-14

您只能使用委派的权限来创建onlineMeeting,因此您必须以用户身份登录,并且不能使用客户端凭据流。您需要使用auth代码流来获得令牌。

 类似资料:
  • 问题内容: 我有一个模型,当从前端发送请求时,我可以在控制器中使用@Valid进行验证: 但是现在,我还使用不含控制器的Jackson的ObjectMapper创建了一个对象。有没有一种方法可以在ObjectMapper中注册此验证,还是应该只检查setter中的变量? 问题答案: 反序列化后,您可以扩展和验证对象。要注册此bean使用。 具有验证的简单bean反序列化器: 我们可以如下使用它:

  • 我试着去看其他的代码例子,但是它们和我的代码比较相似,但是我的应用程序仍然会因为同样的错误而崩溃。 这是我使用firebase文档的指导方针编写的代码: 上面的代码正在将otp发送到给定的号码,但是它崩溃了,并且cat-log显示了上面提到的错误。

  • 我看到的所有解决方案都需要使用。但是,我想在Eclipse之外的单个文件上使用CDT解析器。那有什么办法吗?

  • 问题内容: 我只是想知道是否可以在不将Outlook安装在服务器上且不使用COM Interop的情况下向人们发送会议请求(我不惜一切代价避免在服务器上使用)。 我们在Windows 2003域中拥有Exchange 2003,并且所有用户都是域用户。我想我可以发送’round iCal / vCal之类的东西,但是我想知道是否存在通过Exchange在不使用Outlook的情况下发送会议请求的适

  • 我正在尝试使用Cognito用户池、Facebook和Google设置用户注册和登录。我已经能够使用Cognito中的应用程序集成创建一个注册页面(通过遵循本指南),但我希望将注册页面与我的应用程序的其余部分一起托管。这个答案有些帮助,但缺乏细节。我真的找不到任何好的例子或文档。

  • 问题内容: 我有一个没有情节提要的应用程序,所有UI创建都是通过代码完成的,我得到了一个我可以使其在iPhone上使用的应用程序,因为该应用程序最初仅是为iPad设计的,因此当您在列表中选择一行时,大师认为,它在iPhone上什么也不做,但在iPad上工作正常。 所以我的问题是我可以创建并执行允许在方法上显示“详细视图”的segue 吗? 到目前为止,这是我所做的: 但是当运行并选择一行时,应用程