2016-11-30 78 views
0

MicrosoftGraph Outlook Mail的列表消息API允许我列出管理用户的消息(授权应用程序生成令牌),但它不允许获取其他消息用户。我尝试了以下API调用MicrosoftGraph的列表消息API返回访问被拒绝消息

https://graph.microsoft.com/v1.0/users/[email protected]/messages 

它会返回以下错误消息。

Status Code: 403 
{ 
    "error": { 
     "code": "ErrorAccessDenied", 
     "message": "Access is denied. Check credentials and try again.", 
     "innerError": { 
      "request-id": "2c567919-e538-456a-9a90-74fa43685bd1", 
      "date": "2016-11-30T10:37:58" 
     } 
    } 
} 

请帮我解决问题。

注:我使用的认证码流,这是一个多租户应用。是否可以为多租户应用程序实现令牌流?

回答

0

从您的问题中,您不清楚您正在使用哪个身份验证流程,但我怀疑您正在使用身份验证代码流程。

如果您使用的是身份验证码流和用户委托权限,则无论用户是普通用户还是管理员,您都只能访问当前用户的邮件。

示例使用授权码流:

var ctx = new AuthenticationContext(authority + tenant); 
var t = await ctx.AcquireTokenAsync(resource, clientId, new Uri(redirectUri), new PlatformParameters(PromptBehavior.Auto)); 

只有通过客户端凭证流和应用程序的权限,你可以检索任何用户的邮件。

。样品使用客户机凭证流:

var ctx = new AuthenticationContext(authority + tenant, new TokenCache()); 
var t = ctx.AcquireToken(resource, new ClientCredential(clientId, clientSecret)); 
+0

感谢您的响应。我正在使用代码流进行身份验证,我正在开发多租户应用程序。是否可以为多租户应用程序使用**客户端凭证流程**?由于以下[页面](https://graph.microsoft.io/en-us/docs/authorization/app_only)表示_single-tenant或守护程序app_。 –

相关问题