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

时间:2017-02-28 07:08:55

标签: asp.net-core-mvc microsoft-graph

我有一个带有工作和功能的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();

此代码放在我的Startup类的OpenIdConnectOptions中的OpenIdConnectEvents的OnTokenValidated回调中。

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

到目前为止,对用户的两次调用都很有效,代码会检索一个具有指定属性的用户列表。但是,每当我尝试从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应用程序。作为测试,我检查了要检查的所有内容,但仍然出现此错误。

所以,我的问题是:为什么我会收到此错误?我是否需要添加其他权限,是否需要包含其他内容?

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

从示例代码中,看起来在这里使用了app token。 / me request在使用app token(由client_credential flow获取)的上下文中无效。它仅在授权代码流(也称为3腿流)获得的访问令牌的上下文中有效。如果您可以从错误响应中共享request-id标头以及时间戳,我可以确认。

相关问题