检索 GraphServiceClient.Me 数据时出现 Request_ResourceNotFound 错误

Getting Request_ResourceNotFound error when retrieving GraphServiceClient.Me data

我有一个 ASP.NET 核心应用程序,其中包含 Visual Studio 2015 Update 3 配置的工作和学校帐户身份验证。我正在尝试将 Microsoft.Graph 与我的应用程序集成。具体来说,我正在尝试从当前登录的用户那里获取用户信息(姓名、部门、​​邮件、关于我的信息等)。

根据 ASP.NET MVC 以前版本的示例,我设法使以下代码工作。

var token = await GetAppTokenAsync(authStringMicrosoft, graphResourceId);
var authHelper = new AuthenticationHelper() { AccessToken = token };
var graphClient = new GraphServiceClient(authHelper);

var users1 = await graphClient.Users.Request().GetAsync();
var users2 = await graphClient.Users.Request().Select("mail,givenName,surname").GetAsync();

此代码位于 OpenIdConnectOptions 中 OpenIdConnectEvents 的 OnTokenValidated 回调中,在我的启动程序中 class。

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions {
    // ...
    Events = new OpenIdConnectEvents {                    
        OnTokenValidated = async ctx => {
           // right here
        }
    }
});

到目前为止,对 Users 的两次调用都运行良好,代码为我检索了具有指定属性的用户列表。但是,每当我尝试从 Me 属性 获取数据时,都会出现错误,如下所述。

User me = await graphClient.Me.Request().GetAsync();

错误:

Code: Request_ResourceNotFound
Message: Resource '65c4885a-b493-4b8d-861f-79f0b8c23ec4' does not exist 
         or one of its queried reference-property objects are not present.

Inner error

我不明白为什么会出现此错误。我已经在 Azure 管理门户中检查了应用程序的权限,包括 Windows Azure Active Directory 和 Microsoft Graph 应用程序。作为测试,我检查了所有要检查的内容,但仍然出现此错误。

所以,我的问题是:为什么会出现此错误?我是否需要添加不同的权限,是否需要包含其他任何内容?

提前谢谢你。

从示例代码来看,这里似乎使用了app token。 /me 请求在使用应用程序令牌(通过 client_credential 流程获得)的上下文中无效。它仅在通过授权代码流(也称为三足流)获得的访问令牌的上下文中有效。如果您可以分享错误响应中的 request-id header 以及时间戳,我可以确认。