C# MS Graph API-点击事件/人物/照片端点时未找到资源

C# MS Graph API-点击事件/人物/照片端点时未找到资源,c#,asp.net,.net,azure,C#,Asp.net,.net,Azure,我一直在努力寻找一种解决方案,使用MS Graph API在ASP.NET应用程序中为我的商业邮件帐户创建日历事件 问题 仅供参考,我的企业帐户已被授予我正在使用的订阅的Azure Directory管理员权限,但我无权访问我公司的Active Directory。我的当前Active Directory将我的业务帐户识别为来自“外部Azure Active Directory”源 我已通过使用我的业务帐户访问仅限组织的端点(例如),成功从Azure Active Directory应用程序检索

我一直在努力寻找一种解决方案,使用MS Graph API在ASP.NET应用程序中为我的商业邮件帐户创建日历事件

问题

仅供参考,我的企业帐户已被授予我正在使用的订阅的Azure Directory管理员权限,但我无权访问我公司的Active Directory。我的当前Active Directory将我的业务帐户识别为来自“外部Azure Active Directory”源

我已通过使用我的业务帐户访问仅限组织的端点(例如),成功从Azure Active Directory应用程序检索令牌

我有端点的有效令牌

但是,如果我使用相同的令牌向以下用户发送get请求,则会出现“ResourceNotFound”错误

我尝试过的

  • 在MS Graph Explorer中测试我的帐户
  • 结果-我可以成功命中,但我意识到MS graph应用程序通过公共端点验证我的业务帐户。因此,我认为设置一个允许个人帐户的不同应用程序可能是值得的

  • 设置一个新的AAD应用程序,允许用户同时拥有MS帐户和工作/学校帐户
  • 结果-我可以使用我的个人MS帐户成功命中。我将收到一个提示,提示“AD-APP-NAME需要管理员批准”

  • 设置允许多个租户的新AAD应用程序
  • 结果-这与我上次的尝试类似,只是我无法使用我的个人MS帐户登录

    我的假设

    总之,

  • 我可以使用AAD应用程序的组合检索事件,该应用程序允许peronsal帐户和我的个人MS帐户
  • 我无法使用我的合作帐户检索事件
  • 综上所述,我的假设是outlook资源存储在另一个MS组件(可能是office365?)中,该组件由企业管理,我无权访问。这就解释了响应“未找到资源”

    另一方面,我可以点击me端点是因为基本用户信息存储在我正在使用的当前AAD中

    帮助

    问题1- 为什么我可以在MS Graph Explorer中使用我的业务帐户访问事件端点,而在我自己的ASP.NET应用程序中无法使用以下代码

                    new DelegateAuthenticationProvider(
                async (requestMessage) =>
                {
                    var idClient = ConfidentialClientApplicationBuilder.Create(appId)
                    .WithAuthority(authority)
                        .WithRedirectUri(redirectUri)
                        .WithClientSecret(appSecret)
                        .Build();
    
                    var tokenStore = new SessionTokenStore(idClient.UserTokenCache,
                            HttpContext.Current, ClaimsPrincipal.Current);
    
                    var accounts = await idClient.GetAccountsAsync();
    
                    // By calling this here, the token can be refreshed
                    // if it's expired right before the Graph call is made
                    var result = await idClient.AcquireTokenSilent(graphScopes, accounts.FirstOrDefault())
                        .ExecuteAsync();
    
    
                    requestMessage.Headers.Authorization =
                        new AuthenticationHeaderValue("Bearer", result.AccessToken);
                }));
    
    问题2-

    如果我想用我的商业帐户成功地访问MS Graph端点,有人能证实我的假设并提供一些关于下一步该怎么做的提示吗?让业务AAD管理员设置适当的应用程序范围

    提前谢谢